Fehler beim Abfragen von Wert in Access Datenbank

  • VB.NET

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

    Fehler beim Abfragen von Wert in Access Datenbank

    Hallo,
    ich hätte mal ne Frage, ich hab fogenden Code aber es kommt immer nur "Für das Befehlsobjekt wurde kein Befehlstext festgelegt."
    und ich finde den Fehler einfach nicht.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Function GetCode(ByVal ID As Integer) As String
    2. Try
    3. con.Open()
    4. reader = cmd.ExecuteReader
    5. cmd.CommandText = "select * from Codes " &
    6. "where ID = " &
    7. index(ID)
    8. 'MsgBox(cmd.CommandText)
    9. reader.Read()
    10. Dim wert As String = reader("Code")
    11. reader.Close()
    12. con.Close()
    13. Return wert
    14. Catch ex As Exception
    15. MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler")
    16. Return ex.Message
    17. End Try
    18. End Function


    "index" ist eine ArrayList, in der die Indices der Einträge gespeichert sind.
    Soweit ich weiß geht das "*" mit Access Datenbanken nicht, versuch das hier mal:

    VB.NET-Quellcode

    1. Public Function GetCode(ByVal ID As Integer) As String
    2. Try
    3. con.Open()
    4. reader = cmd.ExecuteReader
    5. cmd.CommandText = "Select BllaBla, BlaBla, BlaBla from Codes Where ID = index(ID)"
    6. 'MsgBox(cmd.CommandText)
    7. reader.Read()
    8. Dim wert As String = reader("Code")
    9. reader.Close()
    10. con.Close()
    11. Return wert
    12. Catch ex As Exception
    13. MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler")
    14. Return ex.Message
    15. End Try
    16. End Function


    Ich weiß nicht wie das mit Arrays ist, wenns nciht klappt versuch das mal mit ner Textbox und guck ob es überhaupt klappt.
    Select * sollte eigentlich schon funktionieren bei Access.
    Mach beim zuweisen des CommandText mal einen Haltepunkt und schau danach, was dort drin steht.
    Die Einträge im Array werden automatisch durchnummeriert. Die ID in der Datenbank wird zwar auch automatisch durchnummeriert.

    Wird jedoch ein Eintrag gelöscht, enstehen "Lücken" und die ID stimmt somit nicht mit der Index des Eintrages im Array überein.

    Gruss
    sandiro
    Also :
    Wenn ich den Haltepunkt an die Zuweisung setzte kommt das Programm erst garnicht da an.
    Nach

    VB.NET-Quellcode

    1. reader = cmd.ExecuteReader

    geht es direkt in den Catch Block

    Wenn es wichtig ist, der reader ist so definiert :

    VB.NET-Quellcode

    1. Dim reader As OleDbDataReader
    Ok ich hab den Befehl ausgeführt bevor er zugewiesen wurde.
    So ist es richtig :

    VB.NET-Quellcode

    1. cmd.CommandText = "Select BllaBla, BlaBla, BlaBla from Codes Where ID = index(ID)"
    2. reader = cmd.ExecuteReader


    Aber jetzt komm folgender Fehler
    Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.
    Parametername: index
    nach

    VB.NET-Quellcode

    1. reader = cmd.ExecuteReader