Browsen von Datenbanken!?

Cpt_Sulo

Erfahrenes Mitglied
Hilfe! String in ADO-Befehl?

Hey,

mein Projekt schreitet voran. Nun brauch doch einmal wieder einen Schubs in die richtige Richtung!
Altes Thema: http://www.tutorials.de/forum/visual-basic/315936-datenbank-tabelle-erstellen-und-import.html

Alles funktioniert soweit, nun möchte ich aber eine Listung der existierenden Tabellen aus der DB haben. Eine Auswählen, die dann überschrieben/gelöscht und neu erstellt wird, oder einen neuen Namen angeben-> erstellen.
Ich brauche einen Tipp, wie ich die Informationen am besten abfrage und mit welcher Methode sich der Dialog am besten realisieren lässt?

Hier mal der bisherige
Code:
Dim strSQL As String
Set DB = New ADODB.Connection

DB.CursorLocation = adUseClient
DB.Provider = "Microsoft.Jet.OLEDB.4.0"
DB.Open "c:\****\TSC\Test.mdb"

Dim Pfad As String
Dim sZeilen() As String
Dim lZeilen As Long
Dim Spalte() As String
Dim z, s As Integer
Dim AnzahlZeilen As Integer

CmDialog1.Filter = "Textdatei(*.txt)|*.txt"
CmDialog1.Flags = &H1000&
CmDialog1.Action = 1
Pfad = CmDialog1.FileName

strSQL = "CREATE TABLE Runde1([Datum] char(15),[Name] char(50),Startplatz char(50),Flugzeugtyp char(50),LigaPunkte char(50),TSC char(50))"
DB.Execute strSQL

Open Pfad For Input As 1

While Not EOF(1)
    ReDim Preserve sZeilen(lZeilen + 1) As String
    Line Input #1, sZeilen(UBound(sZeilen))
    lZeilen = UBound(sZeilen)
    AnzahlZeilen = Format$(UBound(sZeilen) + 1, "#,##0")
Wend

Close 1

z = 2
Do
    s = 0
    
    While Not s = 4
        Spalte = Split(sZeilen(z), Chr(9))
        'MsgBox (Spalte(s))
        s = s + 1
    Wend
            
    strSQL = "Insert Into Runde1([Datum],[Name],Startplatz,Flugzeugtyp) VALUES('" & Spalte(0) & "','" & Spalte(1) & "','" & Spalte(2) & "','" & Spalte(3) & "')"
    DB.Execute strSQL
    z = z + 1
Loop While z < AnzahlZeilen

Vielen Dank für eure Hilfe!
 
Zuletzt bearbeitet:
Alles funktioniert soweit, nun möchte ich aber eine Listung der existierenden Tabellen aus der DB haben.
Hier würde ich die systemtabellen auslesen. Diese sind normaler weise unsichtbar kann man sich aber unter optionen einblenden lassen

Eine Auswählen, die dann überschrieben/gelöscht und neu erstellt wird, oder einen neuen Namen angeben-> erstellen.
Geht ganz einfach über die SQL Befehle Delete Create usw.

Ich brauche einen Tipp, wie ich die Informationen am besten abfrage und mit welcher Methode sich der Dialog am besten realisieren lässt?
Da würde ich vielleicht eine / bzw. mehrere Auswahlboxen für nehmen

Grüsse bb
 
Hey,

danke für die Tipps!

Hier bräuchte ich eine etwas genauere Erklärung:
Hier würde ich die systemtabellen auslesen. Diese sind normaler weise unsichtbar kann man sich aber unter optionen einblenden lassen

Ich hätte die ganze Geschichte gern wie diesen "OpenFileDialog"

Greez
 
Ich habs nun so gelöst, aber mir wird zu viel dargestellt!
Weiß jemand wie ich wirklich nur die Tabellennamen angezeigt bekomme
Er zeigt lauter Einträge mit an, die mit MSys**** beginnen...
Code:
Dim db As ADODB.Connection
Dim RS As ADODB.Recordset

Public Sub Form_Load()
Set db = New ADODB.Connection

db.CursorLocation = adUseClient
db.Provider = "Microsoft.Jet.OLEDB.4.0"
db.Open "c:\***\TSC\Test.mdb"

Set RS = db.OpenSchema(adSchemaTables)

Do Until RS.EOF
    List1.AddItem RS("TABLE_NAME")
    RS.MoveNext
Loop
End Sub
 
Zuletzt bearbeitet:
Oke, Problem gelöst!
Code:
Do Until RS.EOF
    If RS("TABLE_TYPE") = "TABLE" Then
        List1.AddItem RS("TABLE_NAME")
    End If
    RS.MoveNext
Loop

Beharliches :google:Suchen hier im Forum bringt ja etwas.
Trotzdem vielen Dank und ich meld mich beim nächsten Problem...
 
Hm, ich bekomms nicht hin! Und es wird wahrscheinlich sehr simpel sein....
Code:
Public Sub Command1_Click()
    strSQL = "drop table '" & TabellenName & "'"
    db.Execute strSQL
End Sub
Ich bekomme nur Laufzeitfehler in sämtlichen Variationen wenn ich versuche den im String TabellenName enthaltene Tabelle löschen möchte!

Hat jemand die korrekte Syntax parat um Variablen in die ADO-Befehle einzubinden:confused:
 
Die Syntax ist eigentlich richtig. bis auf die '

SQL:
Drop Table Mitarbeiter

Du solltest natürlich auch dafür sorgen das nichts mehr auf die Tabelle zugreift.

Grüsse bb
 
Was steht den in Tabellenname drin? Wenn deine Tabelle entgegen aller Konventionen zum Beispiel Leerzeichen enthält musst du den Tabellennamen in [] einfassen

Grüsse bb
 
Der Tabellenname ist "Runde1", sonst nix!
Die Tabellennamen werden ja nun vorher ausgelesen und in der Listbox angezeigt. Dann zB. "Runde1" ausgewählt und in den String "Tabellenname" geschrieben.
 
Zurück