Prüfen ob eine Tabelle in einer MDB DB existiert...

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Prüfen ob eine Tabelle in einer MDB DB existiert...

    Guten Morgen...

    Suche schon seit heute früh nach ner Lösung, wie ich am schnellsten in einer MDB DB prüfen kann ob eine Tabelle vorhanden ist...
    Die Prüfung braucht nur False oder True zurückgeben.

    Derzeit mein Ansatz:

    VB.NET-Quellcode

    1. Dim con As New OleDb.OleDbConnection
    2. Dim cmd As New OleDb.OleDbCommand
    3. Dim Ergebnis As Boolean
    4. con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & SystemPfad & "\" & sDatabasePath
    5. cmd.Connection = con
    6. cmd.CommandText = "Select count(ID) From Papierstapel"
    7. Try
    8. con.Open()
    9. Ergebnis = True ' Wenn Tabelle vorhanden ist
    10. Catch ex As Exception
    11. Ergebnis = False ' Wenn NICHT Tabelle vorhanden ist
    12. Finally
    13. con.Close()
    14. End Try



    EDIT:

    Jetzt hab ich es so gelöst...

    Kann man das so machen ?

    VB.NET-Quellcode

    1. Try
    2. con.Open()
    3. Ergebnis = cmd.ExecuteNonQuery
    4. Catch ex As Exception
    5. Ergebnis = True ' Wenn NICHT Tabelle vorhanden ist
    6. Finally
    7. con.Close()
    8. End Try


    *Topic verschoben*

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()

    aussm Objectbrowser:

    public override System.Data.DataTable GetSchema()
    Member von System.Data.OleDb.OleDbConnection

    Zusammenfassung:
    Gibt Schemainformationen für die Datenquelle dieser System.Data.OleDb.OleDbConnection zurück.

    Rückgabewerte:
    Eine System.Data.DataTable, die Schemainformationen enthält.


    Da bekommst du glaub eine DataTable, deren Rows das gesamte Schema der Datenbank beinhalten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    ...hätte dazu auch ein Beispiel gefunden...

    VB.NET-Quellcode

    1. Private Function GibtsTabelle(ByVal db_name As String, ByVal tabelle_name As String) As Boolean
    2. Dim RetVal As Boolean = False
    3. Try
    4. .
    5. .
    6. .
    7. cmd.CommandText = "Select count(*) From Information_Schema.Tables Where Table_Name = '" & tabelle_name & "'"
    8. RetVal = (CInt(cmd.ExecuteScalar()) <> 0)
    9. 'Connection schließen
    10. .
    11. .
    12. Catch
    13. End Try
    14. Return RetVal
    15. End Function

    Access-Datenbankmodul findet die Eingabetabelle oder Abfrage 'user_tables' nicht

    Hallo,

    ich versuche gerade mit dem oben genannten Code ausfindig zu machen, ob eine Datentabelle existiert. Derzeit ist meine Datenbank leer, ohne jegliche Tabellen.

    Der folgende Code:

    VB.NET-Quellcode

    1. cmdH.CommandText = "select count(TABLE_NAME) from user_tables where TABLE_NAME = '" & hOrt & "'"cnnH.Open()
    2. If CInt(cmdH.ExecuteScalar) = 1 Then
    3. 'existiert
    4. hOrtExistiert = True
    5. Else
    6. 'existiert nicht
    7. hOrtExistiert = False
    8. End If
    9. cnnH.Close()


    führt immer zu folgender Fehlermeldung:
    Das Microsoft Office Access-Datenbankmodul findet die Eingabetabelle oder Abfrage 'user_tables' nicht. Stellen Sie sicher, dass sie vorhanden ist und der Name richtig eingegeben wurde.

    Hat da jemand eine Idee woran das liegen könnte?
    Ich vermute ja fast, es hängt daran, dass keine Datentabellen in Datenbank vorhanden sind ==> hab ich gerade ausprobiert, die Meldung kommt auch, wenn eine Tabelle in der Datenbank vorhanden ist.
    Es handelt sich um eine Access-Datenbank (*.accdb).


    Hat jemand eine Idee, was ich falsch mache oder wo mein Denkfehler liegt?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „broetchen1979“ ()

    dann eben auf Umwegen zum Ziel...

    Da es einfach nicht funktionieren will habe ich mir eine (wenn auch nicht hübsche) funktionierende Lösung ausgedacht:

    VB.NET-Quellcode

    1. Public Function hOrtExistiert(hDB As String, hOrt As String) As Boolean
    2. 'Prüfen, ob eine Datentabelle für den gewählten Ort in der Hydrantendatenbank vorhanden ist
    3. Dim hydTabString(0 To 100) As String
    4. hOrtExistiert = False
    5. 'Tabellen und Tabellenname in der Datenbank abfragen
    6. TryDim conAB As New OleDbConnection
    7. Dim cmdAB As New OleDbCommandcon
    8. AB.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & hDB
    9. cmdAB.Connection = conAB
    10. conAB.Open()
    11. Dim tabAB As DataTable = conAB.GetSchema("Tables")
    12. Dim iRow As Integer = 0
    13. For Each Row As DataRow In tabAB.Rows
    14. If Row("TABLE_TYPE") = "TABLE" Then
    15. hydTabString(iRow) = (Row("TABLE_NAME").ToString)
    16. 'Prüfen ob eine Datentabelle den gesuchten Namen besitzt
    17. If hydTabString(iRow) = hOrt Then
    18. hOrtExistiert = True
    19. End If
    20. iRow = iRow + 1
    21. End If
    22. Next
    23. conAB.Close()
    24. Catch ex As Exception
    25. MsgBox("Catch-Ereignis" & vbCrLf & ex.Message, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Hinweis")
    26. End Try
    27. 'Ergebnis zurückkgeben
    28. Return hOrtExistiert
    29. End Function


    Es wird zurückgegeben, ob eine gesuchte Datentabelle in der Datenbank vorhanden ist.