منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] قراءة MsysObjects - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] قراءة MsysObjects (/showthread.php?tid=3348)



قراءة MsysObjects - surgam - 27-06-14

السلام عليكم
كيف أستطيع قراءة جدول MsysObjects في قاعدة بيانات أكسس من خلال فيجوال بيسيك
نفذت استعلام لكن يضع خطأ بعدم وجود اذن للقراءة
ممكن تنفيذ مثال يوضح قراءة كائنات MsysObjects لعرض اسماء التقارير الموجودة في قاعدة البيانات

شكرا لكم


RE: قراءة MsysObjects - vbnet - 27-06-14

.....

منقول

عرض اسماء التقارير الموجودة في قاعدة البيانات

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

.....


RE: قراءة MsysObjects - surgam - 27-06-14

شكرا جزيلا لك أخي في الله
سأجرب الكود لكن هل ينفذ أيضاً على أوفيس 2007 ومافوق ؟ طبعاً بعد تغيير البروفيدر ؟


RE: قراءة MsysObjects - surgam - 27-06-14

جربت الكود ونجح بعد إضافة تعديل بسيط
شكرا لك أخي


RE: قراءة MsysObjects - surgam - 28-06-14

فهمت من الكود السابق أنه يمكنني استخراج أسماء الجداول و النماذج و التقارير من قاعدة البيانات
شكرا لكم