für mindestens einen der Parameter wurde kein Wert angegeben ?

  • VB.NET

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

    für mindestens einen der Parameter wurde kein Wert angegeben ?

    Der Titel sagt schon alles oder ^^?

    Per Vb-Code lese ich 2 Sachen aus einer Datenbank aus (Eintragsname & Beschreibung)

    PHP-Quellcode

    1. Private Sub _Gruppen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _Gruppen.SelectedIndexChanged
    2. Dim Ausn As String = _Gruppen.SelectedItem.ToString
    3. Dim con As New OleDb.OleDbConnection
    4. Dim cmd As New OleDb.OleDbCommand
    5. Dim reader As OleDb.OleDbDataReader
    6. con.ConnectionString = _
    7. "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    8. "Data Source=C:\Users\Julius\Desktop\wiki1.mdb"
    9. cmd.Connection = con
    10. cmd.CommandText = "select * from tblEinträge WHERE Gruppenname =""" & Ausn & """"
    11. Try
    12. con.Open()
    13. reader = cmd.ExecuteReader()
    14. Do While reader.Read()
    15. Einträge.Items.Add(reader("Eintragsname"))
    16. Desc.Text = reader("Beschreibung")
    17. Loop
    18. reader.Close()
    19. con.Close()
    20. Catch ex As Exception
    21. MsgBox(ex.Message)
    22. End Try
    23. End Sub


    Beim ausführen kommt die oben genannte Fehlermeldung...ich weiß nicht mehr weiter :/

    /e: habs selber rausbekommen^^
    //Kommentar

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

    Wenn du's gelöst hast, kannst du a) sagen, woran es lag und b) (so weit ich weiß), den Threadtitel auf "[gelöst] bla bla" ändern.

    Im übrigen möchte ich nochmal darauf hinweisen, dass die Verwendung des "OleDBParameter" Objekts in vielen Fällen eine sinnvolle Sache ist!

    VB.NET-Quellcode

    1. cmd.CommandText = "select * from tblEinträge WHERE Gruppenname = ?"
    2. Dim GrpName As New OleDBParameter
    3. GrpName.Value = Ausn
    4. cmd.Parameters.Add(GrpName)


    Leider erlaubt der Konstruktor nicht, den "Value" zu übergeben. Aber wenn man eine öffentlich Methode hat, die so aussieht:

    VB.NET-Quellcode

    1. Public Class OleDBHelpers
    2. Public Shared Function Parameter(ByVal ParamValue As Object) As OleDbParameter
    3. Dim p As New OleDbParameter
    4. p.Value = ParamValue
    5. Return p
    6. End Function
    7. End Class


    dann geht zb folgendes (und sieht IMHO auch noch "schön" aus:

    VB.NET-Quellcode

    1. cmd.Parameters.Add(New OleDBHelpers.Parameter(IrgendeinWert))


    und im Programm sieht das dann so aus:

    VB.NET-Quellcode

    1. cmd.CommandText = "INSERT INTO Tabelle (Vorname, Nachname, Geburtstag, Geschlecht) VALUES (?, ?, ?, ?)
    2. cmd.Parameters.Add(New OleDBHelpers.Parameter(strVorname))
    3. cmd.Parameters.Add(New OleDBHelpers.Parameter(strNachname))
    4. cmd.Parameters.Add(New OleDBHelpers.Parameter(DateOfBirth))
    5. cmd.Parameters.Add(New OleDBHelpers.Parameter(GenderEnum.Male))
    mal abgesehen davon, das die fehlermeldung eigentlich schon die zeile verrät, in der der fehler steckt, sehe ich ihn auch klar und deutlich, und für den Threadersteller nochmal deutlich die zeile

    VB.NET-Quellcode

    1. cmd.CommandText = "select * from tblEinträge WHERE Gruppenname =""" & Ausn & """"


    nun beschwert sich vb bei dir...das ein parameter erwartet wurde....hmmmmm wo müssen denn parameter übertragen werden

    einmal, was soll gesucht(* oder spalte 1 etc)
    dann, wo soll gesucht(in welcher tabelle)
    dann, anhand welcher kriterien soll gesucht werden(where ....)

    nun hast du drei anhaltspunkte, wo der fehler sein kann..vllt kommst ja drauf ;)