Hallo ich versuche ein Login Bildschirm als Windowsformsanwendung zu erstellen und möchte eine Parametrisierte Abfrage zu meiner Datenbank für den Benutzer, Passwort und einen Wahr oder Falsch wert aus führen und bekommen ein Fehlermeldung @Benutzer Skalarvariable muss definiert werden. Irgendwie finde ich den Fehler nicht den ich habe die Variablen vorher definiert.
wer kann mir da helfen ich benutze folgenden Code
Definiert als Klasse: Public Sub ParamQuery(Query As String, Optional Collate As Collation = Collation.None) Try ODBCcon.Open() If Collate = Collation.CaseSensitive Then Query = Query & " COLLATE SQL_Latin1_General_CP1_CS_AS " ODBCcmd = New OdbcCommand(Query, ODBCcon) For Each p As OdbcParameter In ODBCParam MsgBox(p.ParameterName & ":" & p.Value) ODBCcmd.Parameters.Add(p) ODBCcmd.Parameters(p.ParameterName).Value = p.Value Next ODBCDA = New OdbcDataAdapter(ODBCcmd) ODBCDataSet = New DataSet ODBCDA.Fill(ODBCDataSet) MsgBox(Query & vbCrLf & ODBCDataSet.Tables(0).Rows(0).Item(0), MsgBoxStyle.OkOnly, "Erfolgreich") ODBCcon.Close() Catch ex As Exception If ODBCcon.State = ConnectionState.Open Then ODBCcon.Close() MsgBox("Abfrage fehlgeschlagen : " & ex.Message) MsgBox(Query) End Try End Sub Public Sub AddParam(Name As String, Value As Object, Optional DataType As DbType = DbType.String) Dim newParam As New OdbcParameter With {.ParameterName = Name, .Value = Value, .DbType = DataType} ODBCParam.Add(newParam) End Sub 'Parameter leeren Public Sub FlushParams() ODBCParam.Clear() End Sub Public Enum Collation None CaseSensitive End Enum in der Form: Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click ODBC.AddParam("@Benutzer", txtBenutzername.Text, SqlDbType.VarChar) ODBC.AddParam("@Passwort", txtPasswort.Text, DbType.String) ODBC.AddParam("@Lagerist", True, DbType.Boolean) ODBC.ParamQuery("SELECT Name FROM Mitarbeiter WHERE Name = @Benutzer " &"AND PIN = @Passwort AND Lagerist = @Lagerist ", ODBCControl.Collation.CaseSensitive) frmMenü.Show() Me.Hide() End Sub
Danke
Remo