منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : قراءة MsysObjects
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
كيف أستطيع قراءة جدول 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 ومافوق ؟ طبعاً بعد تغيير البروفيدر ؟
جربت الكود ونجح بعد إضافة تعديل بسيط
شكرا لك أخي
فهمت من الكود السابق أنه يمكنني استخراج أسماء الجداول و النماذج و التقارير من قاعدة البيانات
شكرا لكم