VB 5/6-Tipp 0436: ADO - alle Datenbankobjekte auslesen
von Florian Reischl
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: | Verwendete API-Aufrufe: keine | Download: |
'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-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
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.