2012-10-08 51 views
0
Dim sqlUpdate As String 

sqlUpdate = "UPDATE [Stock Conversion] SET [Stock Conversion].Status = 'PRINTED' " & _ 
"WHERE ((([Stock Conversion].Status) = 'NEW'));" 

' Turn off warning 
DoCmd.SetWarnings False 

'Run SQL 
DoCmd.RunSQL (sqlUpdate) 

'Turn on warning 
DoCmd.SetWarnings True 

基本上沒有錯誤消息,它只是沒有任何反應?任何人都可以在這裏發現SQL問題嗎?試圖更新ms訪問中的字段

任何人都可以幫忙嗎?

+2

你有status ='NEW'的記錄嗎?另外,爲什麼所有的括號? – LittleBobbyTables

+0

我這樣做,並且我讀取的訪問喜歡括號:P –

+3

嘗試使用警告以查看消息是否提供了任何其他信息。另外,請在更新之前和之後從數據庫中發佈幾行實際樣本數據。 –

回答

3

將此語句粘貼到新的Access查詢的SQL視圖中並對其進行測試。

UPDATE [Stock Conversion] 
SET Status = 'PRINTED' 
WHERE Status = 'NEW'; 

如果它不起作用,希望錯誤信息能幫助你理解爲什麼你可以修復它。

如果它確實工作正常,請使用DAO.Database對象的.Execute方法從VBA執行相同的語句。由於您不會使用DoCmd.RunSQL,所以沒有動機關閉SetWarnings。這是一個重要的一點,因爲當你關閉SetWarnings時你會壓制信息。

Dim db As DAO.Database 
Dim sqlUpdate As String 

sqlUpdate = "UPDATE [Stock Conversion]" & vbCrLf & _ 
    "SET Status = 'PRINTED'" & vbCrLf & _ 
    "WHERE Status = 'NEW';" 
Debug.Print sqlUpdate 
DoCmd.SetWarnings True ' in case it had been left off somehow ' 
Set db = CurrentDb 
db.Execute sqlUpdate, dbFailOnError 
Set db = Nothing 
+0

嘿漢斯,對不起,我已經設法讓這個工作現在,基本上我編寫的代碼在一個預先編碼的按鈕(打印報告),我已經寫在預先編寫的代碼的末尾沒有想到,事實證明我寫了它在On_error部分! –

+1

@BobP很高興你發現了這個錯誤,雖然你的存在,但是我建議你稍微修改一下你的代碼到HansUp提到的** execute **方法,因爲這是比關閉警告更好的做法。 –

0

出頭的幫助:從setwhere

    • 刪除[Stock Conversion]去除不必要的括號內如果
    • 再次刪除分號
    • 檢查。
    • 如果它不工作,除去where,然後再試一次,檢查是否有 與你是第一個問題
    • 一個SQL跟蹤添加到數據庫,查看查詢是否真正被 submited
    • 貼在這裏完整的SQL陳述,所以我們可以幫助更多
  • +0

    我幾乎不相信他在生產數據庫上這樣做,他可能有一個開發數據庫 – Diego

    +0

    我見過很多使用Access的地方,一直回到1.0版本。我一方面可以把那些將發展與生產分離開來的數據。無論如何,對於那些晚些時候提到這個問題的人來說,提出這個問題可能是明智的,他們可能沒有從生產中孤立發展。 –

    相關問題