Probleme mit Datenübergabe über Select

  • Access

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Rene M..

    Probleme mit Datenübergabe über Select

    Hallo Zusammen.

    Ich habe ein kleines Problem.

    Ablauf ist bisher folgendermaßen. Ich frage in meiner f_haupt die Kundennummer über ein DataGridView ab welches an ein Neues Form "f_Kunden" übergeben wird.

    Hier wird anhand der Kundennummer in der Datenbank gesucht und die Werte in den TB's geschrieben.

    Jetzt mein Problem.

    Sobald ein Wert wie z.B. Telefon nicht da ist stellt er die Suche ein und füllt die anschließend abgefragten Boxen nicht mehr selbst wenn die Werte hierfür vorhanden wären. Kann mir jmd helfen ?

    VB.NET-Quellcode

    1. Private Sub datenabfrage()
    2. Kundennummer = My.Settings.Kundennummer
    3. TB_KdnNr.Text = My.Settings.Kundennummer
    4. ' Dim dbcommand As String
    5. Dim Reader As OleDbDataReader
    6. cmd.Connection = dbconn
    7. cmd.CommandText =
    8. "select * from Kunden where KundenNummer like '" & Kundennummer & "'"
    9. Try
    10. dbconn.Open()
    11. Reader = cmd.ExecuteReader
    12. Reader.Read()
    13. If Reader.HasRows Then
    14. TB_Name.Text = Reader("Kundenname")
    15. TB_Straße.Text = Reader("Straße")
    16. TB_PLZ.Text = Reader("PLZ")
    17. TB_Status.Text = Reader("Status")
    18. TB_HändlerNr.Text = Reader("HändlerNr")
    19. TB_Telefon.Text = Reader("Telefon")
    20. TB_Info.Text = Reader("Info")
    21. Reader.Close()
    22. dbconn.Close()
    23. End If
    24. Catch ex As Exception
    25. End Try
    26. End Sub

    VB.NET-Quellcode

    1. Reader.Read()
    2. Dim FieldNames = Enumerable.Range(0, Reader.FieldCount).[Select](Function(i) Reader.GetName(i)).ToArray()
    3. If FieldNames.Contains("Telefon") Then ​TB_Telefon.Text = Reader("Telefon")


    Allerdings würde ich DataBinding bevorzugen, aber dann musst du wohl dein komplettes Design umwerfen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Moin,

    1. Dein SQL-Statement ist suboptimal. Normalerweise macht man bei Kundennummern kein "like" sondern
    select * from Kunden where KundenNummer = '" & Kundennummer & "'"
    Weil, es soll ja genau diese KundenNummer sein und nicht ungefähr.

    2. Lad alle Daten in eine DataTable. Diese kannst du dann durchlaufen und deine Textboxen füllen. Hier lässt sich auch gut auf DBNULL prüfen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen