2008-12-02 105 views
3

是否有可能獲取使用更新查詢更新的記錄報告,而不使用記錄集?如何顯示更新查詢更新了多少條記錄?

例:

sqltext = update table employees set bonus = 0 where salary > 50000
DoCmd.RunSQL sqltext

在此之後查詢運行,是有可能得到對他們來說,執行此更新查詢員工的名​​字嗎?

回答

4

這是從來沒有使用DoCmd.RunSQL因爲它會產生一個提示(您必須關閉,如果你不希望它)是一個好主意,即使出現錯誤,它完成了更新,不報告錯誤。更好的是,執行相同的SQL函數來替代它:

Public Function SQLRun(strSQL As String) As Boolean 
On Error GoTo errHandler 

    CurrentDB.Execute strSQL, dbFailOnError 
    SQLRun= True 

exitRoutine: 
    Exit Function 

errHandler: 
    MsgBox err.Number & ": " & err.Description, vbExclamation, "Error in SQLRun()" 
    Resume exitRoutine 
End Function 

一旦你放在這個公用模塊中,你可以很容易地做一個全局搜索和替換DoCmd.RunSQLSQLRun來取代它。

編輯:此函數的另一個版本返回受影響的記錄數是here

1

我目前沒有看到任何方式來獲取更新查詢後運行的信息,除非您有另一個區分字段(可能是更新的日期字段)。爲什麼不運行它的選擇查詢並從該數據運行報告,則運行更新查詢以更改「獎金」的值。

讓我知道這是否有幫助! JFV

+0

我不知道這個方法上有一定的紀錄的機會更新可能無法haapen,但他們可以通過選擇查詢 – tksy 2008-12-02 13:21:33

2

我知道它的一個老問題,但沒有直接回答OP問題的答案(我通過Google Top 3的結果在嘗試記住語法時得到的) 如果使用Execute方法,您可以獲得記錄數直接影響:

sqltext = "update table employees set bonus = 0 where salary > 50000" 
CurrentDb.Execute sqltext 
AffectedRows = CurrentDb.RecordsAffected 
'Optional Notification 
    MsgBox CStr(AffectedRows) & " records were affected by this SQL statement."