روشی سریع برای خواندن dbf c. چگونه یک فایل DBF را در Access به صورت برنامه نویسی وصل کنیم؟ حذف ورودی های یک فایل DBF

امروزه، احتمالاً نیازی به این نیست که به کسی گفته شود که اغلب بسیاری از کاربران با فایل‌هایی با پسوند dbf. مواجه می‌شوند. غم انگیزترین چیز این است که در سیستم عامل ویندوز، حتی اگر مایکروسافت آفیس نصب شده باشد، حتی یک برنامه با این نوع فایل مرتبط نیست. ما آن را داریم، اکنون سعی خواهیم کرد آن را کشف کنیم. در همان زمان، بیایید ببینیم که چگونه می توانید یک ارتباط پسوندی برای شناسایی خودکار داده های بعدی و باز کردن فایل مورد نظر تنظیم کنید.

فرمت DBF: توضیحات

در واقع، از همان مخفف اعمال شده برای پسوند یک فایل از این نوع، می توان نتیجه گرفت که این یک پایگاه داده است. این تا حدودی خاص است، زیرا چنین فایل هایی معمولا پسوند دارند

در این مورد، ما برنامه دیگری داریم، که، با وجود ویژگی آن، توسط بسیاری از برنامه هایی که از کار با اطلاعات از این نوع پشتیبانی می کنند، شناخته شده است. این می تواند همان اکسل یا اکسس باشد که بخشی از بسته اصلی مایکروسافت آفیس است یا هر برنامه آفیس دیگری از توسعه دهندگان شخص ثالث.

نحوه باز کردن DBF در نسخه استاندارد

در واقع، اگر به طور ناگهانی با فایلی از این نوع مواجه شدید (آیکون روی آن حتی در اکسپلورر استفاده نمی شود)، وحشت نکنید. می توان آن را به سادگی با استفاده از اکسل باز کرد، زیرا در آن است که کل ساختار منطقی ذخیره می شود و با در نظر گرفتن همین موضوع، امکان استفاده از یک سیستم جستجوی استاندارد وجود دارد.

از آنجایی که هیچ برنامه ای با خود فایل در نسخه استاندارد مرتبط نیست، دو راه برای ادامه وجود دارد. به عنوان مثال توصیه می شود به سادگی اکسل یا اکسس را راه اندازی کنید و سپس از منوی استاندارد باز کردن فایل یا کلید ترکیبی Ctrl + O استفاده کنید. البته در منوی که در قسمت نوع فایل ظاهر می شود، باید "همه فایل ها" را مشخص کنید. (و نه فرمت "بومی")، پس از اینکه چرا فایل مورد نظر خود را انتخاب کنید. مطمئن باشید: هر برنامه صفحه گسترده این نوع داده را بدون هیچ مشکلی تشخیص می دهد.

همانطور که قبلاً مشخص است ، مشکل نحوه باز کردن یک فایل DBF در مورد ما فقط به استفاده از یک برنامه اداری استاندارد در حالت دستی مربوط می شود. همانطور که قبلا مشخص است، این روش همیشه راحت نیست و به زمان معینی نیاز دارد.

برنامه های مرتبط

حالا بیایید به خود فایل DBF نگاه کنیم. چگونه می توانم آن را بدون استفاده از برنامه های مجموعه آفیس استاندارد باز کنم؟ بله، توسط همان ابزارهای موجود در محصولات نرم افزاری مشابه.

به عنوان مثال، می تواند همان Open Office، Lotus و ... باشد. اصولاً در اینجا تفاوت زیادی وجود ندارد، زیرا تنها چیزی که مهم است این است که برنامه مورد استفاده قادر به کار با داده های الکترونیکی جدولی است. خواندن فرمت DBF در همه موارد دقیقاً یکسان انجام می شود. به هر حال، این به توسعه دهنده مجموعه اداری بستگی ندارد، زیرا همه از این نوع داده ها پشتیبانی می کنند، حتی پلتفرم هایی مانند اوراکل.

در حال تغییر گزینه های باز کردن پیش فرض

حال بیایید ببینیم چگونه فایل های DBF را باز کنیم تا از حالت خودکار استفاده شود. در ساده‌ترین حالت، این کار از زیر منوی فراخوانی شده با کلیک راست بر روی فایل در "Explorer" معمولی انجام می شود، جایی که دستور "Open with..." انتخاب شده است.

برای یک مورد، یکی از برنامه های ذکر شده استفاده می شود. برای اینکه دوباره در مورد نحوه باز کردن فایل های DBF ذهن خود را درگیر نکنید، می توانید به سادگی برنامه انتخاب شده را مشخص کنید و سپس کادر کنار خط "استفاده برای همه فایل های این نوع" را در پایین علامت بزنید. همین اکسل در آینده (اگر به عنوان برنامه پیش فرض انتخاب شود) با یک دوبار کلیک معمولی فایلی از این نوع را باز می کند.

ناگفته نماند که به جای اکسل، می توانید اکسس یا سایر برنامه هایی را که می توانند این نوع داده ها را شناسایی و باز کنند، انتخاب کنید. مساله این نیست. نکته اصلی پیکربندی باز شدن خودکار پایگاه داده است. خوب، اینکه چه چیزی از نظر نرم افزاری باید با آن کار کرد بستگی به تک تک کاربران سیستم کامپیوتری دارد.

نتیجه چیست؟

به طور خلاصه، شایان ذکر است که بهترین گزینه هنگام باز کردن فایل هایی از این نوع، طبیعتاً مجموعه آفیس شرکت مایکروسافت است، زیرا در سراسر جهان گسترده ترین است. درست است، هیچ مشکلی در این واقعیت وجود ندارد که کاربری که از محصولات مایکروسافت استفاده نمی کند، داده هایی از این نوع را در هر برنامه دیگری باز می کند.

همانطور که از همه موارد بالا مشخص است، ویرایشگرهای جدول تقریباً در تمام بسته های شناخته شده امروزی وجود دارند. آنها ممکن است فقط در نامشان با یکدیگر تفاوت داشته باشند و قطعاً در مجموعه عملکردی آنها که به عنوان یک قاعده در همه جا یکسان است با استثنائات نادر.

در میان چیزهای دیگر، بر این اساس، می توانید از بسیاری از ابزارهای توسعه با استفاده از تعداد نسبتاً زیادی از زبان های برنامه نویسی استفاده کنید. در همان پلت فرمی که از ایجاد و بهینه سازی سرورهای SQL پشتیبانی می کند ، چنین پرونده هایی ، همانطور که می گویند ، فوراً باز می شوند. هنگامی که باز می شوند، ظاهر نسبتاً خاصی خواهند داشت که برای کاربر معمولی تا حدودی غیرعادی است. با این حال، اکثر کاربران بعید هستند که از چنین ابزارهای توسعه حرفه ای استفاده کنند و خود را فقط به یک مجموعه نرم افزار استاندارد محدود می کنند.

روز همگی بخیر، خوانندگان عزیز وبلاگ. در مقاله امروز در مورد دسترسی به فایل های DBF (جدول) به روش های مختلف صحبت خواهم کرد. زمانی که نیاز به دسترسی به جداول FoxPro DBF داشتم با این مشکل مواجه شدم. من از طریق BDE امتحان کردم، کار نکرد، فقط در جداول پارادوکس (dbf)، در پایان تصمیم گرفتم از طریق مؤلفه TDBF امتحان کنم - همچنین معلوم شد که یک شکست است. تصمیم گرفتم از طریق ADO به روش قدیمی وصل شوم و همه چیز مانند ساعت پیش رفت.

بنابراین، در این مقاله به شما خواهم گفت که چگونه می توانید به سه روش به جداول DBF متصل شوید:

  • استفاده از BDE - این گزینه برای جداول FoxPro برای من کار نمی کند
  • با استفاده از ADO - جداول FoxPro کاملاً باز شدند
  • با استفاده از کامپوننت TDBF، جداول پارادوکس با کدگذاری های مختلف یا dBase را به خوبی باز می کند.

راستش من اصلا نمیتونم BDE رو تحمل کنم ولی مجبور شدم با همچین جداولی کار کنم و اولین گزینه ای که میخواستم از طریق اون بهشون وصل بشم استفاده از BDE بود که در اصل برای من جواب داد که است، من موفق به دریافت لیستی از جداول شدم، که از آن خوشحال بودم و فکر می کردم همه چیز طبق انتظار پیش می رود، اما اینطور نبود. وقتی سعی کردم به یک جدول وصل شوم، با خطای زیر مواجه شدم:

هم در خود BDE Administrator و هم هنگام وصل شدن سعی کردم نصبش کنم ولی هیچی نشد. اما با استفاده از این روش توانستم به جداول DBF - Paradox، به عنوان مثال dBase، کاملاً متصل شوم.

بنابراین، اجزای زیر را از تب BDE روی فرم نصب می کنیم:

  • TTable یا TQuery
  • به صورت اختیاری، می توانید TDataSource و TDbGrid را انجام دهید

بعد، در ویژگی DatabaseName کامپوننت TDataBase، نام پایگاه داده را تنظیم کردیم، نوشتم - MyDB، و در ویژگی DriverName همان کامپوننت، STANDART را از لیست کشویی انتخاب کردم. ما ویژگی LoginPromt را روی False قرار دادیم، زیرا هیچ لاگین و رمز عبوری در جداول ما وجود ندارد. در ویژگی Params ما پارامترهای اتصال را تنظیم کردیم، من فقط مسیر جداول خود را مشخص کردم:

همچنین می توانید بر روی کامپوننت TDataBase دوبار کلیک کنید و اتصال لازم را پیکربندی کنید و ویژگی Connected را روی True قرار دهید، در نتیجه اتصال به جداول باید بدون هیچ خطایی رخ دهد. این همه است، اجازه دهید به مؤلفه TTable برویم، جایی که در ویژگی DatabaseName نام پایگاه داده خود، یعنی MyDB را نشان می دهیم. در خاصیت TableType نوع جدول را انتخاب کردم ttDBase را مشخص کردم و در خاصیت TableName نام جدول را انتخاب کنید و پس از آن خاصیت Active را True قرار می دهیم. همین، برای من کاملاً متصل می شود و جدول را به خوبی نمایش می دهد.

اما این گزینه برای من با جداول FoxPro کار نکرد، همانطور که در بالا ذکر کردم. بنابراین برای حل مشکلم تصمیم گرفتم از فناوری ADO استفاده کنم. بنابراین از تب ADO کامپوننت های زیر را نصب کردم:

  • TADOConnection
  • TADOQuery یا TADOTable
  • به صورت اختیاری می توانید TDataSource و TDBGrid را نصب کنید

در مرحله بعد، ما فقط باید اتصالی را که برای پایگاه داده MS Access ایجاد کردیم، ایجاد کنیم، از این جهت متفاوت است که یک ارائه دهنده داده متفاوت، یعنی Microsoft Visual FoxPro ODBC را انتخاب می کنیم. تمام است، سپس رمزگذاری و مسیر جداول را نشان می دهیم. اگر اینها جداول FoxPro هستند، پس پوشه باید حاوی یک فایل با لیستی از همه جداول با پسوند *.dbc باشد. یعنی رشته اتصال مولفه TADOCONnection چیزی شبیه به این خواهد بود:

کامپوننت TADOConnection را با TADOTable یا TADOQuery متصل می کنیم و با جداول مورد نیاز خود کار می کنیم.

گزینه دیگر کار با جداول با فرمت dbf با استفاده از کامپوننت TDBF است که من در پروژه از آن استفاده می کنم. صادقانه بگویم، من می خواهم آن را رها کنم، فقط با رمزگذاری خوب کار می کند. من به شما نمی گویم که چگونه با آن کار کنید، اما فقط یک پیوند را به عنوان مثال می گذارم.

شاید این کد از می تواند کمک کند:

تابع VB که باید در MS Access قرار دهید بسیار ساده است و اساساً متد TransferDatabase را فراخوانی می کند و آن را DSN (اشاره به پایگاه داده منبع)، نام جدول مبدا و نام جدول مقصد ارسال می کند. کد به شکل زیر است:

تابع عمومی وارد کردن (dsnName به عنوان رشته، sourceTableName به عنوان رشته، targetTableName به عنوان رشته) 'اگر جدول از قبل وجود دارد، آن را حذف کنید. در مورد خطا برو به CopyTable DoCmd.DeleteObject acTable، targetTableName CopyTable: DoCmd.TransferDatabase _ acImport، _ "ODBC Database"، _ "ODBC;DSN=" + dsnName، _ acTable، _ sourceTableName، _ targetTableName

و سپس کد سی شارپ:

شیء دسترسیObject = null; امتحان کنید ( accessObject = Activator.CreateInstance(Type.GetTypeFromProgID("Access.Application"))؛ accessObject.GetType().InvokeMember("OpenCurrentDatabase"، System.Reflection.BindingFlags.Default System.ReflagsetIn.vollkending. , New Object ( "AccessDbase.mdb" )); accessObject.GetType().InvokeMember("Run"، System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod، null، accessObject، New Object ("Import"، "نام DSN"، "نام جدول منبع"، "نام جدول هدف")؛ accessObject.GetType().InvokeMember("CloseCurrentDatabase"، System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod، null، accessObject، null)؛ MessageBox.Show ("کپی با موفقیت انجام شد.")؛ ) catch (Exception ex) ( string message = ex.Message; while (ex.InnerException != null) ( ex = ex.InnerException; message += "\r \n----\r\n" + ex.Message; ) MessageBox.Show(message); ) در نهایت ( if (accessObject != null) ( System.Runtime.InteropServices.Marshal.ReleaseComObject(accessObject); AccessObject = null; ))

تغییر VBA برای خواندن acLink به جای acImport باید اجازه پیوند را بدهد.

نظرات را ویرایش کنید

من نمی توانم با C# کمکی بکنم، اما در اینجا مقداری VBScript وجود دارد که یک جدول را از یک MDB به دیگری پیوند می دهد.

StrLinkFile = "C:\Docs\Link.mdb" strAccessFile = "C:\Docs\LTD.mdb" "Create Link..." تنظیم cn = CreateObject("ADODB.Connection") cn. "Provider=Microsoft" را باز کنید. Jet.OLEDB.4.0;" & _ "منبع داده=" & strAccessFile & ";" & _ "Persist Security Info=False" تنظیم adoCat = CreateObject("ADOX.Catalog") تنظیم adoCat.ActiveConnection = cn تنظیم adoTbl = CreateObject("ADOX.Table") تنظیم adoTbl.ParentCatalog = adoCatTame = "LinkTame" adoTbl.properties("Jet OLEDB:Link Datasource") = strLinkFile adoTbl.properties("Jet OLEDB:Link Provider String") = "MS Access" adoTbl.properties("Jet OLEDB:Remote Table Name") = "Table1" adobl .properties("Jet OLEDB:Create Link") = True "Append the table to the tables collection " adoCat.Tables.Append adoTbl

DBF یک فرمت ذخیره سازی داده پرکاربرد است که در دهه 80 قرن گذشته ظاهر شد. این فرمت برای اولین بار در خانواده DBMS dBase استفاده شد. به دلیل محبوبیت و استفاده گسترده از dBase، بسیاری از محصولات نرم افزاری شبیه به dBase ساخته شده اند که در مجموع xBase نامیده می شوند. با وجود قدمت قابل توجه فرمت، هنوز هم بسیار مورد استفاده قرار می گیرد. این مقاله نحوه کار با DBF از 1C:Enterprise را مورد بحث قرار می دهد.

در 1C: Enterprise، یک شیء نرم افزاری خاص، xBase، برای کار با فایل ها در قالب DBF (نسخه dBase III) استفاده می شود. کار با این شی معمولاً مشکلی ایجاد نمی کند.

توجه!

هنگام کار با فایل های DBF، به یاد داشته باشید که نام فایل باید محدودیت 8.3 را برآورده کند.

توجه!

شی xBase هم در سمت مشتری و هم در سمت سرور در دسترس است. هنگام حل هر مشکل خاص باید از طریق تعامل مشتری و سرور فکر کنید.

خواندن یک فایل DBF

خواندن داده ها از یک فایل DBF در چندین مرحله متوالی انجام می شود:

  1. ایجاد یک شی XBase.
  2. باز کردن یک فایل؛
  3. به صورت متوالی در تمام خطوط فایل تکرار کنید و مقادیر فیلد را بخوانید.
  4. بستن فایل
DBP = XBase جدید؛ DBP. OpenFile("D:\MyFile.dbf"); // مرحله 2. باز کردن فایل در حالی که چرخه حقیقت // مرحله 3. حلقه زدن از طریق خطوط فایلگزارش (DBF.NAME)؛ اگر DBP نه. Next() سپس // موقعیت در رکورد بعدی سقط endIf; چرخه پایان DBP. CloseFile(); // مرحله 4. بستن فایل

می توانید از یک الگوریتم کمی تغییر یافته برای تکرار در خطوط یک فایل استفاده کنید:

هنوز DBF نیست. گزارش حلقه AtEnd() (DBF.NAME)؛ DBP. بعد()؛ چرخه پایان

در حال آپلود در فایل DBF

مراحل آپلود در فایل DBF:

  1. ایجاد یک شی XBase.
  2. تعیین رمزگذاری (اگر مشخص نشده باشد، از رمزگذاری ANSI استفاده خواهد شد).
  3. شرح فیلدها؛
  4. ایجاد فایل؛
  5. حلقه با افزودن و پر کردن خطوط.
  6. بستن فایل

بیایید با استفاده از یک مثال به این فرآیند نگاه کنیم:

DBP = XBase جدید؛ // مرحله 1. یک شی XBase ایجاد کنید DBP. رمزگذاری = EncodingXBase. OEM; // مرحله 2. تعیین رمزگذاری DBP. زمینه های. Add("CODE" , "S" , 9 ); // مرحله 3. شرح نام و نوع فیلد DBP. زمینه های. Add("NAME" , "S" , 40 ); DBP. CreateFile("D:\MyFile.dbf"); // مرحله 4. ایجاد فایلانتخاب = دایرکتوری ها. نامگذاری. انتخاب کنید()؛ انتخاب خداحافظ. Next() حلقه DBP. اضافه کردن()؛ // یک خط اضافه کنید DBP. کد = نمونه کد؛ // مقدار فیلد را پر کنید DBP. NAME = انتخاب. نام؛ DBP. نوشتن()؛ // خط EndCycle را بنویسید. DBP. CloseFile(); // مرحله 6. بستن فایل

هنگام تعیین رمزگذاری، از نوع XBase Encoding استفاده می شود که می تواند دو مقدار داشته باشد:

  • ANSI– فرمت ویندوز؛
  • OEM– فرمت DOS

افزودن یک فیلد جدید هنگام توصیف یک ساختار دارای نحو است

اضافه کردن (< Имя>, < Тип>, < Длина>, < Точность>)

انواع زیر موجود است:

  • "N" - شماره؛
  • "S" - رشته؛
  • "D" - تاریخ؛
  • "L" - بولی؛
  • "F" - مشابه "N" - عدد.

طول فیلد برای انواع فیلدهای "N"، "F" و "S" لازم است.

کار با شاخص ها

یک فایل فهرست ممکن است همراه با فایل DBF استفاده شود که ممکن است حاوی اطلاعاتی در مورد یک یا چند نمایه باشد. وجود نمایه ها امکان استفاده از جستجو و نه فقط جستجوی متوالی تمام خطوط فایل را فراهم می کند.

هنگام ایجاد یک فایل فهرست، باید مشخص کنید:

  • فهرست شاخص ها؛
  • مسیر ذخیره فایل فهرست (در مرحله 4 آپلود).

نمونه ای از ایجاد یک فایل فهرست:

DBP . شاخص ها افزودن("INDCODE" , "CODE" ); DBP. ایجاد فایل("D:\MyFile.dbf"، "D:\index.cdx");

نحو برای افزودن یک نمایه جدید به صورت زیر است:

اضافه کردن (< Имя>, < Выражение>, <Уникальность>, < Убывание>, < Фильтр >)

برای استفاده از نمایه ها هنگام خواندن از یک فایل DBF:

  • مسیر فایل فهرست (در مرحله 2 دانلود) را مشخص کنید.
  • شاخص فعلی را تنظیم کنید.

نمونه ای از باز کردن یک فایل DBF با استفاده از یک فایل فهرست:

DBP . OpenFile("D:\MyFile.dbf" , "D:\index.cdx"); DBP. CurrentIndex = dbf. شاخص ها INDCODE;

توجه!

هنگام باز کردن یک فایل DBF، موقعیت یابی در اولین رکورد در فایل رخ می دهد. اولین ورودی در فایل با اولین ورودی فهرست مطابقت ندارد. به همین دلیل، هنگام استفاده از شاخص‌ها، باید قبل از پیمایش ردیف‌ها، خود را در ردیف اول فهرست قرار دهید. این را می توان با استفاده از متد First () انجام داد، برای مثال:

DBP. اولین()؛

یکی از دو تابع را می توان برای جستجو استفاده کرد:

  • پیدا کردن (< Ключ>, < Режим >) ;
  • FindByKey(< Режим >) .

در نتیجه هر دو تابع، مقداری از نوع Boolean برگردانده می شود (خواه رکوردی با شرایط مشخص شده پیدا شود یا نه). اگر جستجو موفقیت آمیز باشد، نشانگر فعلی روی خط یافت شده تنظیم می شود. یکی از مقادیر زیر می تواند به عنوان حالت جستجو استفاده شود:

  • «>=»;
  • «>»;
  • «<=»;
  • «<«.

بیایید به جستجو در یک فایل DBF با استفاده از مثال ها نگاه کنیم:

DBP = XBase جدید؛ DBP. OpenFile("D:\MyFile.dbf" , "D:\index.cdx"); // هنگام باز کردن یک فایل DBF، یک فایل فهرست اضافی مشخص می شود DBP. CurrentIndex = dbf. شاخص ها INDCODE; // شاخص فعلی را تنظیم کنید // با استفاده از روش Find جستجو کنید:اگر DBP. Find("000000003" , "=" ) سپس Report( + DBP. NAME); گزارش دیگر ("یافت نشد")؛ endIf; // با استفاده از روش FindByKey جستجو کنید: DBP. کلید. کد = "000000002" ; اگر DBP. FindByKey("=" ) سپس گزارش دهید( "یافت شد. نام مورد:"+ DBP. نام)؛ گزارش دیگر ("یافت نشد")؛ endIf; DBP. CloseFile();

حذف ورودی های یک فایل DBF

حذف یک رکورد با استفاده از روش Delete () انجام می شود:

DBP . حذف();

اما هنگام استفاده از این روش، رکورد به طور دائم از فایل حذف نمی شود، به عنوان حذف شده علامت گذاری می شود. هنگام تکرار روی ردیف ها، رکوردهایی که برای حذف علامت گذاری شده اند نادیده گرفته می شوند. اگر می‌خواهید کل فایل، از جمله ورودی‌های علامت‌گذاری‌شده برای حذف را بخزید، باید ویژگی را روی True تنظیم کنید. نمایش حذف شدشی xBase. با استفاده از تابع RecordDeleted() می توانید متوجه شوید که آیا یک رکورد برای حذف علامت گذاری شده است یا خیر. برای حذف علامت حذف، از متد Restore() استفاده کنید.

DBP . DisplayDeleted = True; هنوز DBF نیست. حلقه AtEnd() If DBP. RecordDeleted() سپس DBP. بازگرداندن()؛ endIf; DBP. بعد()؛ چرخه پایان

برای حذف مستقیم ورودی های علامت گذاری شده، از متد ()Shrink استفاده کنید:

DBP . فشرده کردن();

اگر نیاز دارید که تمام ورودی های یک فایل را مستقیماً حذف کنید، می توانید از متد ()ClearFile استفاده کنید:

DBP . فایل روشن();

بارگیری از DBF با استفاده از ADO

از فناوری ADO می توان برای کار با فایل های DBF استفاده کرد. درایورهای ADO در سیستم عامل ویندوز گنجانده شده اند و نیازی به نصب اضافی ندارند.

بیایید به نمونه ای از کد برای خواندن از یک فایل DBF با استفاده از فناوری ADO نگاه کنیم:

ADO = COMObject جدید ("ADODB.Connection"); // یک شی COM ایجاد کنید ADO. باز کن( "Provider=Microsoft.Jet.OLEDB.4.0; |Data Source=""D:\""; |Extended Properties=DBASE III") DB = ADO. Execute ("انتخاب * از MyFile"); // درخواست دریافت تمام رکوردها از فایل MyFile.DBFخداحافظ بی دی. چرخه EOF= 0 //از میان رکوردهای فایل DBF حلقه بزنیدگزارش (DB. Fields("Name"). value); // نمونه ای از دسترسی به یک مقدار فیلد DB. MoveNext(); //به ورودی بعدی برویدچرخه پایان ADO. بستن()؛

مثال نشان داده شده از رشته اتصال "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="D:\";Extended Properties=DBASE III استفاده می کند. در این خط:

  • ارائه دهنده درایور مورد استفاده است.
  • منبع داده – مسیری که فایل DBF در آن قرار دارد. مسیر دقیقا به دایرکتوری مشخص شده است. نام فایل به عنوان نام جدول در کوئری ها استفاده می شود.
  • ویژگی های توسعه یافته - هنگام دسترسی به فایل های DBF، این یک پارامتر ضروری است. می توانید فرمت فایل را مشخص کنید

توجه!

هنگام خواندن با استفاده از روش مشخص شده، رمزگذاری پیش فرض OEM است. برای تغییر کدگذاری به ANSI، باید پارامتر HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase\DataCodePage را در رجیستری ویندوز روی "ANSI" تنظیم کنید.

شاید این کد از می تواند کمک کند:

تابع VB که باید در MS Access قرار دهید بسیار ساده است و اساساً متد TransferDatabase را فراخوانی می کند و آن را DSN (اشاره به پایگاه داده منبع)، نام جدول مبدا و نام جدول مقصد ارسال می کند. کد به شکل زیر است:

تابع عمومی وارد کردن (dsnName به عنوان رشته، sourceTableName به عنوان رشته، targetTableName به عنوان رشته) 'اگر جدول از قبل وجود دارد، آن را حذف کنید. در مورد خطا برو به CopyTable DoCmd.DeleteObject acTable، targetTableName CopyTable: DoCmd.TransferDatabase _ acImport، _ "ODBC Database"، _ "ODBC;DSN=" + dsnName، _ acTable، _ sourceTableName، _ targetTableName

و سپس کد سی شارپ:

شیء دسترسیObject = null; امتحان کنید ( accessObject = Activator.CreateInstance(Type.GetTypeFromProgID("Access.Application"))؛ accessObject.GetType().InvokeMember("OpenCurrentDatabase"، System.Reflection.BindingFlags.Default System.ReflagsetIn.vollkending. , New Object ( "AccessDbase.mdb" )); accessObject.GetType().InvokeMember("Run"، System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod، null، accessObject، New Object ("Import"، "نام DSN"، "نام جدول منبع"، "نام جدول هدف")؛ accessObject.GetType().InvokeMember("CloseCurrentDatabase"، System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod، null، accessObject، null)؛ MessageBox.Show ("کپی با موفقیت انجام شد.")؛ ) catch (Exception ex) ( string message = ex.Message; while (ex.InnerException != null) ( ex = ex.InnerException; message += "\r \n----\r\n" + ex.Message; ) MessageBox.Show(message); ) در نهایت ( if (accessObject != null) ( System.Runtime.InteropServices.Marshal.ReleaseComObject(accessObject); AccessObject = null; ))

تغییر VBA برای خواندن acLink به جای acImport باید اجازه پیوند را بدهد.

نظرات را ویرایش کنید

من نمی توانم در این مورد کمکی کنم، اما در اینجا مقداری VBScript وجود دارد که یک جدول را از یک MDB به دیگری پیوند می دهد.

StrLinkFile = "C:\Docs\Link.mdb" strAccessFile = "C:\Docs\LTD.mdb" "Create Link..." تنظیم cn = CreateObject("ADODB.Connection") cn. "Provider=Microsoft" را باز کنید. Jet.OLEDB.4.0;" & _ "منبع داده=" & strAccessFile & ";" & _ "Persist Security Info=False" تنظیم adoCat = CreateObject("ADOX.Catalog") تنظیم adoCat.ActiveConnection = cn تنظیم adoTbl = CreateObject("ADOX.Table") تنظیم adoTbl.ParentCatalog = adoCatTame = "LinkTame" adoTbl.properties("Jet OLEDB:Link Datasource") = strLinkFile adoTbl.properties("Jet OLEDB:Link Provider String") = "MS Access" adoTbl.properties("Jet OLEDB:Remote Table Name") = "Table1" adobl .properties("Jet OLEDB:Create Link") = True "Append the table to the tables collection " adoCat.Tables.Append adoTbl