2016-04-12 30 views
0

Ich versuche, ausgewählte Datensatz aus meiner Datenbank zu entfernen, die MySQL und Visual Basic 6 verwendet, aber es funktioniert nicht sogar keinen Fehler Ich bin dabei. Hier ist mein Code für die Verbindung und auch für einen Knopf klickenMySQL DELETE Datensatz funktioniert nicht in Vb

Public rs As New ADODB.Recordset 
Public cn As New ADODB.Connection 
Public sql As String 
Dim dbpath As String 

Sub main() 
Set rs = New ADODB.Recordset 
Set cn = New ADODB.Connection 

With rs 
.CursorLocation = adUseClient 
.CursorType = adOpenDynamic 
.LockType = adLockOptimistic 
End With 

dbpath = "DSN=RetailPOS;" 

On Error GoTo errhandler 
With cn 
    .Open dbpath 
    '.CursorLocation = adUseClient 
    MDIMAIN.Show 
End With 
'cn.Open dbpath 
    Exit Sub 

errhandler: 
    MsgBox "Error Number: " & Err.Number & vbCrLf & "Description: " & Err.Description, _ 
    vbCritical 
End Sub 

Schaltfläche klicken Code

Private Sub RmvBtn_Click() 
    If rs.State = 1 Then rs.Close 
    sql = "DELETE FROM tbluserinfo WHERE UserGroup = '" & Txt(3).Text & "'" 
    cn.Execute (sql) 
    MsgBox "The selected user was successfully deleted!", vbInformation + vbOKOnly, ShowProductLabel 
End Sub 
+0

Welcher Datentyp ist UserGroup? Was ist der Wert von Txt (3) .Text, wenn Sie testen? Wenn UserGroup numerisch ist, brauchen Sie keine einfachen Anführungszeichen um den Wert herum. Wenn UserGroup Text ist, stellen Sie sicher, dass Txt (3) .Text keinen Leerraum hat, der dazu führt, dass die Abfrage den Wert nicht findet? Wenn die UserGroup Text ist, verwenden Sie eine Sortierung, bei der die Groß-/Kleinschreibung beachtet wird? – Marc

+0

UserGroup ist numerisch, d. H. ** int (5) ** –

Antwort

0

Da Usergroup numerisch ist, sollten Sie

sql = "DELETE FROM tbluserinfo WHERE UserGroup = " & Txt(3).Text 

Sie würden verwenden auch Txt validieren (3) .Text vor dem Aufruf der Abfrage. Wenn es leer ist, erhalten Sie die folgende Abfrage, die einen Fehler verursacht.

DELETE FROM tbluserinfo WHERE UserGroup = 

Sie sollten auch überprüfen, ob Txt (3) .Text numerisch ist. Das Hinzufügen von Trim() innerhalb von IsNumeric() fängt eine leere Zeichenfolge ab, da diese nicht numerisch ist.

If Not IsNumeric(Trim(Txt(3).Text)) Then 
    'Tell the user and don't run the query 
End If 
+0

Gelöst dank –