2016-09-08 12 views
5

के माध्यम से laccdb फ़ाइल की सामग्री प्राप्त करें मैं वीबीए के माध्यम से अपने एक्सेस डेटाबेस की laccdb फ़ाइल की सामग्री को देखने में सक्षम होना चाहता हूं, इसलिए मैं इसे उपयोगकर्ताओं (एक बटन के माध्यम से) को अलर्ट करने के लिए उपयोग कर सकता हूं जो डेटाबेस में है।वीबीए

मैं विशेष रूप से किसी तृतीय पक्ष टूल का उपयोग नहीं करना चाहता हूं। मैंने इसका उपयोग करने का प्रयास किया है:

Set ts = fso.OpenTextFile(strFile, ForReading) 
strContents = ts.ReadAll 

यह ठीक काम करता है यदि केवल 1 उपयोगकर्ता डेटाबेस में है। लेकिन एकाधिक उपयोगकर्ताओं के लिए यह शायद गैर- ASCII वर्ण से उलझन में है और एक प्रवेश के बाद बात इस तरह का में चला जाता है हो जाता है:

complete gibberish

किसी को भी किसी भी सुझाव हैं? अगर मैं Notepad ++ में फ़ाइल खोलने यह ठीक है ...


कोड अंत में इस्तेमाल किया इस प्रकार है (मैं शीर्षक जरूरत नहीं थी और न इस्तेमाल किया जा रहा कुछ कोड को हटा दिया है) है:

Sub ShowUserRosterMultipleUsers() 
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset 

cn.Provider = "Microsoft.ACE.OLEDB.12.0" 
cn.Open "Data Source=" & CurrentDb.Name 

Set rs = cn.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}") 
While Not rs.EOF 
    Debug.Print rs.Fields(0) 
    rs.MoveNext 
Wend 

End Sub 

उत्तर

6

मैं इस जो मदद करनी चाहिए, यह वास्तव में LDB फ़ाइल को पढ़ने नहीं है मिला, लेकिन यह जानकारी है कि आप की जरूरत है (स्रोत: https://support.microsoft.com/en-us/kb/198755): है

Sub ShowUserRosterMultipleUsers() 
    Dim cn As New ADODB.Connection 
    Dim cn2 As New ADODB.Connection 
    Dim rs As New ADODB.Recordset 
    Dim i, j As Long 

    cn.Provider = "Microsoft.Jet.OLEDB.4.0" 
    cn.Open "Data Source=c:\Northwind.mdb" 

    cn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _ 
    & "Data Source=c:\Northwind.mdb" 

    ' The user roster is exposed as a provider-specific schema rowset 
    ' in the Jet 4 OLE DB provider. You have to use a GUID to 
    ' reference the schema, as provider-specific schemas are not 
    ' listed in ADO's type library for schema rowsets 

    Set rs = cn.OpenSchema(adSchemaProviderSpecific, _ 
    , "{947bb102-5d43-11d1-bdbf-00c04fb92675}") 

    'Output the list of all users in the current database. 

    Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _ 
    "", rs.Fields(2).Name, rs.Fields(3).Name 

    While Not rs.EOF 
     Debug.Print rs.Fields(0), rs.Fields(1), _ 
     rs.Fields(2), rs.Fields(3) 
     rs.MoveNext 
    Wend 

End Sub 
+0

कि एक अच्छा प्रारंभिक बिंदु की तरह दिखता है। मैं काम करने की कोशिश कर रहा हूं कि जेट I के किस संस्करण को 4.0 के रूप में बदलना है, एडीडीबी फाइलों का समर्थन नहीं करेगा। कोई उपाय? –

+3

मैंने इसे 'माइक्रोसॉफ्ट.एसीई.ओएलडीबी.12.0' में बदल दिया है और '" डेटा स्रोत = "और CurrentDb.Properties (0) का उपयोग किया है। वैल्यू' और ऐसा लगता है कि यह एक आकर्षण की तरह काम कर रहा है! ग्रेसियस। –

+1

निफ्टी। @TimEdwards: 'CurrentDb.Name'' CurrentDb.Properties (0) से थोड़ा अधिक पठनीय है। वैल्यू' :) – Andre