Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0436: ADO - alle Datenbankobjekte auslesen

 von 

Beschreibung 

Ein Beispiel wie man alle Objekte wie Tabellen/Abfragen/StoredProcedures (in Access als Aktionsabfrage bekannt) aus einer Datenbank auslesen kann. Hierfür wird über die Routine OpenSchema ein Recordset mit allen wichtigen Informationen über die Objekte erstellt welches jedoch nur ausgelesen werden kann.
Beispiel ist getestet für Access und MS-SQL-Server. Sollte auch bei Oracle funktionieren. Der derzeit aktuelle Informix-OLE-Treiber unterstützt diese Funktionalität nicht.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [59,48 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
' Es muss ein Verweis auf 'Microsoft ActiveX Data Objects 2.5 Library' gesetzt werden.
' Die Komponente 'Microsoft DataGrid Control 6.0 (OLEDB) (MSDATGRD.OCX)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Listen-Steuerelement "List1"
' Steuerelement: Listen-Steuerelement "List2"
' Steuerelement: DataGrid "DataGrid1"
' Steuerelement: Listen-Steuerelement "List3"

Option Explicit

Dim Cn As ADODB.Connection  ' ADO-Connectionobjekt für Verbindung
Dim Rs As ADODB.Recordset   ' ADO-Recordset für Datenhandling

Private Sub Command1_Click()
    Call Unload(Me)
End Sub

Private Sub Form_Load()
    Dim i As Integer
    
    ' Verbindung zu einer Accessdatenbank aufbauen
    Set Cn = New ADODB.Connection
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .CursorLocation = adUseClient
        .Properties("Data Source") = App.Path & "\db1.mdb"
        .Open
    End With
 
    ' Views (Abfrage) auslesen und in Liste einfügen
    Set Rs = Cn.OpenSchema(adSchemaViews)
    For i = 0 To Rs.RecordCount - 1
        Me.List2.AddItem Rs.Fields("TABLE_NAME")
        Rs.MoveNext
    Next i
 
    ' StoredProcedures (Aktionsabfragen) auslesen und eifügen
    Set Rs = Cn.OpenSchema(adSchemaProcedures)
    For i = 0 To Rs.RecordCount - 1
        Me.List3.AddItem Rs.Fields("PROCEDURE_NAME")
        Rs.MoveNext
    Next i
    
    ' Tabellen auslesen
    Set Rs = Cn.OpenSchema(adSchemaTables)
    
    ' Daten an DataGrid übergeben
    Set Me.DataGrid1.DataSource = Rs
    
    ' Alle Datensätze überprüfen und nur Usertabellen anzeigen
    For i = 0 To Rs.RecordCount - 1
        If Rs.Fields("TABLE_TYPE") = "TABLE" Then
            Me.List1.AddItem Rs.Fields("TABLE_NAME")
        End If
        Rs.MoveNext
    Next i
    
    ' Zurück zum Anfang
    Rs.MoveFirst
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 8 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von FrankS am 27.11.2006 um 17:32

Wie kann man die ausgeblendeten Tabellen bzw. Abfragen auslesen ?

Kommentar von SimoneK am 02.12.2003 um 16:40


Hat sich schon mal jemand die Mühe gemacht, den Tipp zu testen? Entweder war der Programmierer besoffen, oder hat jemand die Datenbanken vertauscht. Der Tipp kann so gar nicht funktionieren

Kommentar von Brikena am 26.09.2003 um 10:53

Hallo, wie sieht es aus wenn mehrere Tabellen miteinander verknüft sin?
Aus eine Tabelle Daten zu lesen bzw schreiben ist es doch mit allen Mitteln einfach!!! Haben Sie vielleicht da eine Idee wie man da vorgehen muss?

Kommentar von bert am 11.06.2003 um 13:02

ich hatte eigentlich etwas zur OpenSchema - Methode erwartet. Leider habe ich dazu hier nix gefunden.

Kommentar von Flori Karlheinz am 07.05.2003 um 16:29

Hallo,
ich war auf der Suche nach einem Tool, mit dem ich SQL-Datenbanken, Benutzer, Rollen und Berechtigungen verwalten kann. Leider ohne Erfolg, aber dafür fand ich in ihrem Archiv andere nützliche Tools die mir etwas weiter geholfen haben.
Ich finde ihr VB-Archiv gut. Macht weiter so!
Gruß Flori Karlheinz

Kommentar von rainer.walz am 30.06.2002 um 23:05

Hi,
deine Seite ist Top.
Auf der Page http://www.activevb-archiv.de/vb/VBtips/VBtip0436.shtml
ist dir aber ein Fehler unterlaufen. Dieser Code ermittelt nicht die Datenbankobjekte.
Gruss
Rainer

Kommentar von Horst am 27.03.2002 um 17:15

Hat man sich die
"tbl_Personen"
gebastelt, wird
"sp_Add_Person"
als Fehler ausgeworfen.
Son Beispiel sollte
schon laufen!!!

Kommentar von Niko am 10.03.2002 um 23:42

Die mitgelieferte DB scheint nicht zu dem Beispiel zu passen.
Im Programm wird aus der Tabelle "tbl_Personen"
gelesen, die ist aber nicht in der DB drin.