Problem ? Finde es nicht :(

KroaX_Net

Mitglied
Hallo zusammen

Ich bin noch ganz neu dabei und habe erst letzte Woche mit ASP.NET angefangen. Habe allerdings schon einige Zeit mit HTML & CO auf dem Buckel. Mein Problem ist im Moment das ich in meinem Projekt auf eine Datenbank zugreife, dort daten abrufe und in ein Grid packe. Ich habe allerdings noch eine IF Anweisung geschrieben die eine Fehlermeldung in ein Label schreiben soll falls keine Daten in der Datenbank gefunden wurden. Hier mal der Code

Code:
    Private Sub sql_connect()

        Dim My_command As New MySqlCommand
        Dim My_adapter As New MySqlDataAdapter
        Dim table_artikel As New DataTable("Artikel")
        Dim SelectCommand As String = "SELECT * FROM Artikel where ARTIKEL_NR = ?A_nr;"

        My_connect.Open()

        My_adapter = New MySqlDataAdapter(SelectCommand, My_connect)
        My_adapter.SelectCommand.Parameters.Add(New MySqlParameter("?A_nr", MySqlDbType.String))
        My_adapter.SelectCommand.Parameters("?A_nr").Value = txt_artikelnr.Text

        My_adapter.Fill(My_dataset, "Artikel")

        If table_artikel.Rows.Count = 0 Then
           lbl_error.Text = "keine Artkeldaten gefunden"
        End If

        Me.Daten.DataSource = My_dataset.Tables("Artikel")
        Me.Daten.DataBind()


        My_connect.Close()

    End Sub
Mein Problem ist jetzt das die Fehlermeldung IMMER Erscheint auch wenn Daten im DataGrid erscheinen ... ich sehe den Fehler nicht :( !
Anmerkung zum Code :
Die Verbindung mit der Datenbank geschiet schon beim Seitenpreload also nicht wundern ... abfragen etc. funktioniert alles ... kann auch daten abrufen... nur erscheint trotzdem die Fehlermeldung
 
Zuletzt bearbeitet:

Julian Maicher

Erfahrenes Mitglied
Du füllst das Dataset my_dataset über den DataAdapter my_adapter.
Warum erwartest du denn jetzt Daten in dem DataTable table_artikel?
Da können keine Rows enthalten sein, weil du table_artikel garnicht füllst.
table_artikel benötigst du garnicht.


Probier es mal so:
Code:
Private Sub sql_connect()
        Dim My_command As New MySqlCommand
        Dim My_adapter As New MySqlDataAdapter
        Dim SelectCommand As String = "SELECT * FROM Artikel where ARTIKEL_NR = ?A_nr;"
        
        My_connect.Open()
        
        My_adapter = New MySqlDataAdapter(SelectCommand, My_connect)
        My_adapter.SelectCommand.Parameters.Add(New MySqlParameter("?A_nr", MySqlDbType.String))
        My_adapter.SelectCommand.Parameters("?A_nr").Value = txt_artikelnr.Text

        My_adapter.Fill(My_dataset, "Artikel")

        If My_dataset.Tables(0).Rows.Count = 0 Then
           lbl_error.Text = "keine Artkeldaten gefunden"
        End If

        Me.Daten.DataSource = My_dataset.Tables("Artikel")
        Me.Daten.DataBind()

        My_connect.Close()

    End Sub
 

KroaX_Net

Mitglied
Deine Lösung hat auf jeden Fall nen guten Ansatz , hattest schon recht die Table brauchte ich gar nicht unbedingt ... allerdings bekomme ich bei deinem Code den Fehler das er keine Tabelle (0) in deinem Fall findet
 

KroaX_Net

Mitglied
Den gleichen Fehler ... naja der Debugger schreibt halt "An der Position 0 befindet sich keine Zeile."

Kann man es nicht auch so schreiben das wenn er keine Zeilen findet das er dann die Meldung ausgibt ? Aber eigentlich war das doch genau das was er machen soll ... nur der Debugger meckert ...

Aber eines ist schonmal richtig .. wenn ich daten habe erscheint die Meldung nicht mehr !! ^^
Nur soll er nicht den Debugger öffnen wenn keine Daten vorhanden sind sondern er soll dann die Meldung ausgeben
 

DanyCode

Grünschnabel
Hi,
Code:
 Private Sub sql_connect()
        Dim My_DataSet as New DataSet
        Dim My_command As New MySqlCommand
        Dim My_adapter As New MySqlDataAdapter
        Dim table_artikel As New DataTable("Artikel")
        Dim SelectCommand As String = "SELECT * FROM Artikel where ARTIKEL_NR = ?A_nr;"

        My_connect.Open()

        My_adapter = New MySqlDataAdapter(SelectCommand, My_connect)
        My_adapter.SelectCommand.Parameters.Add(New MySqlParameter("?A_nr", MySqlDbType.String))
        My_adapter.SelectCommand.Parameters("?A_nr").Value = txt_artikelnr.Text

        My_adapter.Fill(table_Artikel, "Artikel")
        
        my_DataSet.Tables.ADD(table_Artikel)

        If my_DataSet.tables("Artikel").Rows.Count = 0 Then
           lbl_error.Text = "keine Artkeldaten gefunden"
        End If

        Me.Daten.DataSource = My_dataset.Tables("Artikel")
        Me.Daten.DataBind()


        My_connect.Close()

    End Sub


so in der art tue ich das meist... habe den code jetzt nicht getestet jedenfalls fülle ich immer ein table und die kommt ind ein dataset... in einem dataset können ja durchaus mehrere tabellen sein
 

KroaX_Net

Mitglied
Habe grade noch ein wenig rumprobiert und es scheint als wäre nicht die IF Anweisung das Problem ... sondern er meckert immer wenn ich bei meinem Artikelnummereingabefeld "?A_nr" eine Artikelnummer eingebe welche nicht vorhanden ist.