2013-07-10 26 views
1

我正在運行追加查詢(更改someones登錄密碼)的訪問,目前它檢查,以確保密碼匹配,他們知道原始密碼。然而,我遇到了一個問題,如果更新查詢:DoCmd.RunSQL "UPDATE Credentials SET Credentials.[Password] = [Forms]![LoginSubmit]![DesiredPassword] WHERE (((Credentials.Password)=[Forms]![LoginSubmit]![CurrentPassword]) AND ((Credentials.[User ID])=[Forms]![LoginSubmit]![User ID]));"更新0行(意味着條件未滿足),它會關閉(我有一個docmd.close以下)。如果它確實更新了密碼,它的確如此,所以最終你不知道它是否成功,直到你嘗試新的密碼。如果更新查詢更改顯示消息框的VBA 1行,顯示另一個如果沒有

我想知道它什麼時候更新0行,所以我可以拍攝一個MsgBox,告訴他們它沒有工作,結束子,並讓他們再試一次。如果它更新1行,我會有一個MsgBox說「成功」。

我知道上面的VBA除了返回該查詢中更新行數的值的部分。有人可以幫我嗎?

在此先感謝。

回答

1

執行DAO.Database對象變量的UPDATE聲明。之後,您可以將您的用戶通知建立在變量的RecordsAffected屬性上。

下面是一個簡單的例子,與Access 2007

Dim db As DAO.Database 
Dim strUpdate As String 
strUpdate = "UPDATE tblFoo" & vbCrLf & _ 
    "SET some_text = 'bar'" & vbCrLf & _ 
    "WHERE id = 7;" 
Debug.Print strUpdate 
Set db = CurrentDb 
db.Execute strUpdate, dbFailOnError 
MsgBox db.RecordsAffected & " records affected" 
Set db = Nothing 
+0

我得到驗證,預計參數不能滿足誤差(預計3,在'db.Execute strUpdate,dbFailOnError'給予2) – Dm3k1

+0

我加入'Debug.Print strUpdate'。使用它來將'UPDATE'語句打印到立即窗口。去那裏(Ctrl + g),複製語句,並將其粘貼到新的Access查詢的SQL視圖中。當您嘗試運行該查詢時,Access會通知您它認爲是「缺少的參數」。 – HansUp

+0

'私人小組LoginSubmit_Click() 昏暗分貝作爲DAO.DATABASE 昏暗strUpdate作爲字符串 strUpdate = 「UPDATE憑證」 &vbCrLf&_ 「組憑證。[密碼] = [表格]![LoginSubmit]![DesiredPassword] (((Credentials.Password)= [Forms]![LoginSubmit]![CurrentPassword])AND((Credentials。[User ID])= [Forms]![LoginSubmit]![User ID ]));」 設置DB = CurrentDb db.Execute strUpdate,[dbFailOnError] MSGBOX db2.RecordsAffected與 「受影響的記錄」 集DB =無 結束Sub' - 這是我的代碼 – Dm3k1

相關問題