2016-04-12 108 views
0

我想從我的數據庫中刪除選定的記錄,它使用MySQL和Visual Basic 6,但它不工作,即使沒有錯誤,我正在進入它。這裏是我的連接代碼,也爲按鈕單擊MySQL刪除記錄不工作在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 

按鈕點擊代碼

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

UserGroup是什麼數據類型?當你測試時,Txt(3).Text的價值是什麼?如果UserGroup是數字,那麼您不需要圍繞該值的單引號。如果UserGroup是文本,您是否確保Txt(3).Text沒有任何空白導致查詢無法找到值?此外,如果UserGroup是文本,您是否使用區分大小寫的排序規則? – Marc

+0

UserGroup是數字,即** int(5)** –

回答

0

由於用戶組是數字,你應該使用

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

也將驗證TXT(3)調用查詢之前.Text。如果它是空的,那麼你將最終得到下面的查詢,這將引發錯誤。

DELETE FROM tbluserinfo WHERE UserGroup = 

您還應該檢查以確保Txt(3).Text是數字。在IsNumeric()內部添加Trim()會捕獲空白字符串,因爲它不會是數字。

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

解析謝謝 –