2017-12-06 4 views
0

Hallo alle Iam versuchen, ein Lager mit diesem Code unten zu reduzieren, aber Iam Fehler bekommen, kann mir jemand helfen ???? pleaseee `kein Wert angegeben für eine oder mehrere erforderliche Parameter vb.net

Public Sub UpdateDecreaseQuantity() 
    Try 
     Dim cb As String = "Update Dish SET Quantity = stocksOnHand - '" & DataGridView1.CurrentRow.Cells(2).Value & "' " 
     con.Open() 
     cmd = New OleDbCommand(cb, con) 
     cmd.ExecuteNonQuery() 

    Catch ex As Exception 
     MsgBox(ex.Message) 
    Finally 
     cmd.Dispose() 
     con.Close() 
    End Try 

End Sub 

Antwort

1

Erstens, Wenn DataGridView1.CurrentRow.Cells(2).Value0 Länge Zeichenfolge oder Nothing Wert ist, erhalten Sie diesen Fehler.

Bitte überprüfen Sie mit:
Not String.IsNullOrEmpty(DataGridView1.CurrentRow.Cells(2).Value).

Zweitens haben Sie Anführungszeichen um den Zellwert in der Abfrage hinzugefügt

‚“ & DataGridView1.CurrentRow.Cells (2) .Value & "‘"

Zahlenwert sollte keine Anführungszeichen haben

Drittens, diese Abfrage ist anfällig für SQL-Injektion att ack. Bitte versuchen Sie die Abfrage zu parametrisieren.

Beispiel:

Dim OtherValue as Integer = 0 
Dim cb As String = "Update Dish SET Quantity = stocksOnHand - @OtherValue" 
con.Open() 
cmd = New OleDbCommand(cb, con) 
Int32.TryParse(DataGridView1.CurrentRow.Cells(2).Value, OtherValue) 
cmd.Parameters.Add("@OtherValue", SqlDbType.Int).Value = OtherValue 
cmd.ExecuteNonQuery() 
+0

Können Sie mir bitte sagen, wie Sie die Abfrage des Codes parametrieren? –

+0

Beispiel hinzugefügt. Sie müssen möglicherweise nach Bedarf aktualisieren – Sunil

+0

Hallo @Sunil Ich habe einige aktualisierte Code nach Ihrem Vorschlag, aber wenn ich meine Anwendung NOTHING passieren (kein Fehler und keine Arbeit) –

0

So wie Sie doppelte Anführungszeichen verwenden, um eine String in VB zu bedeuten, sie aber nicht um Zahlen setzen, so einfache Anführungszeichen eine Zeichenfolge in SQL bezeichnen. Wenn Sie zwei Zahlen subtrahieren, müssen beide Zahlen sein, nicht eine einzelne Zahl und eine Zeichenkette.

Noch besser wäre es zu lernen, wie man Werte in SQL richtig einfügt und Parameter verwendet.

Verwandte Themen