ورود

View Full Version : مشکل با تابع ADODataSet1.GetFieldNames در ارتباط با جداول سیستمی



zarrin
چهارشنبه 20 اردیبهشت 1385, 07:16 صبح
سلام
همانطور که میدونید هر فایل اکسسی دارای یک سری جداول سیستمی هستش که عبارتند از

MSysAccessObjects
MSysAccessXML
MSysACEs
MSysObjects
MSysQueries
MSysRelationships

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

TmpStrList:TstringList
...
....
:=ADODataSet1.ConnectionString
'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source=G:\Components\TestDB.mdb;'+
'Mode=ReadWrite;Persist Security Info=False';

ADODataSet1.Command Type:=cmdText;
ADODataSet1.CommandText:='Select * from MSysACEs'
ADODataSet1Active := True

(ADODataSet1.GetFieldNames(TmpStrList
(Showmessage(TmpStrList.gettext

این کد به خوبی کار میکنه منتها فقط با دو جدول اول ولی به محض استفاده این تابع برای 4 جدول باقیمانده در بالا به یک پیغام خطا بر میخورم :

Record(s) Cannot be read; no read permission on 'MSysACEs'

کسی میتونه بگه کجای کارم غلطه.؟

با تشکر.

محسن یکتا
یک شنبه 31 اردیبهشت 1385, 11:10 صبح
چون دو تا جدول اولی در دیتابیس شما وجود دارد پس Access 2002 یا بالا تر می باشد. شما در این دیتا بیس حتی م توانی دو جدول اولی را بکل حذف کنی و هیچ اخطاری نمی گیری چرا که آنها جزئی از سیستم اصلی نیستند. ولی چهار جدول آخری جزئی از سیستم اصلی Engine هستند و شما به این اجازه دسترسی به این صورت ندارید.
اگر منظور اصلی تان را از دستیابی به فیلدهای این جدول بگوئید شاید راه بهتری بتوانم پیشنهاد کنم.