السلام عليكم
كيف أستطيع قراءة جدول MsysObjects في قاعدة بيانات أكسس من خلال فيجوال بيسيك
نفذت استعلام لكن يضع خطأ بعدم وجود اذن للقراءة
ممكن تنفيذ مثال يوضح قراءة كائنات MsysObjects لعرض اسماء التقارير الموجودة في قاعدة البيانات
شكرا لكم
.....
منقول
عرض اسماء التقارير الموجودة في قاعدة البيانات
mdb
كود :
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim Modules As String = "[type]=-32761" ' الوحدات
Dim Reports As String = "[type]=-32764" ' التقارير
Dim Macros As String = "[type]=-32766" ' الماكرو
Dim Forms As String = "[type]=-32768" ' النماذج
Dim Tables As String = "[type]=1 AND [Name] NOT LIKE 'MSys%'" ' الجداول
Dim Queries As String = "[type]=5 AND [NAME] NOT LIKE '~%'" ' الاستعلامات
Using conn As New OleDb.OleDbConnection(" Provider = Microsoft.Jet.Oledb.4.0; Data Source = db1.mdb; Jet OLEDB:System Database = " & Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Microsoft\Access\System.MDW")
Using da As New OleDb.OleDbDataAdapter("SELECT [Name] FROM [MSysObjects] WHERE " & Tables, conn)
Dim dt As New DataTable
da.Fill(dt)
For Each row As DataRow In dt.Rows
Me.ListBox1.Items.Add(row("Name"))
Next
End Using
End Using
End Sub
accdb
كود :
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
Dim Modules As String = "[type]=-32761" ' الوحدات
Dim Reports As String = "[type]=-32764" ' التقارير
Dim Macros As String = "[type]=-32766" ' الماكرو
Dim Forms As String = "[type]=-32768" ' النماذج
Dim Tables As String = "[type]=1 AND [Name] NOT LIKE 'MSys%'" ' الجداول
Dim Queries As String = "[type]=5 AND [NAME] NOT LIKE '~%'" ' الاستعلامات
Using conn As New OleDb.OleDbConnection(" Provider = Microsoft.Ace.Oledb.12.0; Data Source = Database1.accdb; Jet OLEDB:System Database = " & Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Microsoft\Access\System.MDW")
Using da As New OleDb.OleDbDataAdapter("SELECT [Name] FROM [MSysObjects] WHERE " & Reports, conn)
Dim dt As New DataTable
da.Fill(dt)
For Each row As DataRow In dt.Rows
Me.ListBox1.Items.Add(row("Name"))
Next
End Using
End Using
End Sub
معلومات عن ملف System.MDW
.....
شكرا جزيلا لك أخي في الله
سأجرب الكود لكن هل ينفذ أيضاً على أوفيس 2007 ومافوق ؟ طبعاً بعد تغيير البروفيدر ؟
جربت الكود ونجح بعد إضافة تعديل بسيط
شكرا لك أخي
فهمت من الكود السابق أنه يمكنني استخراج أسماء الجداول و النماذج و التقارير من قاعدة البيانات
شكرا لكم