2016-10-04 73 views
0

SAVE按鈕的代碼中,我想保存記錄,並在與我保存記錄的表不同的表中標記一個複選框。它基本上就像一張清單表,表明已經完成了一些事情。我知道-1代表一個對勾,所以我曾嘗試:使用VBA設置表格中的複選框不是表格

Me.tblProjectCompletion.Done = -1 

,我已經嘗試過了沒有Me

我也試着把它放到一個表格中,先將它保存到表格中,但是這導致了其他問題。如果我可以節省我想對專案編號這將是最好的表的複選標記,所以我也嘗試:

if ProjectCompletion.ProjectCompID = Project.ProjectID then tblProjectCompletion.Done = -1 

但是這樣的代碼不工作或者。有什麼建議麼?

Currentdb.Execute 
Update ProjectCompletion 
Set [ProjectCompletion].[Done] = -1 
WHERE [ProjectCompletion].[ProjectCompID] = [Project].[ProjectID] 

我試過這段代碼,有和沒有括號和引號,並在末尾有一個分號。有了這種模式,它停止執行,並說argument not optional。以下代碼有效。我只需要添加複選框的檢查。

Private Sub Save_Record_Click() 
DoCmd.RunCommand acCmdSaveRecord 
If Me.Dirty Then 
Me.Dirty = False 
End If 
End Sub 
+2

你需要使用一個更新語句如:CurrentDb.Execute「UPDATE表名SET字段名= -1 WHERE <記錄更新條件>「 – Sorceri

+0

雖然可以使用連接兩個表的查詢並使用DISTINCT關鍵字將表單綁定到兩個表,但您最好使用@ Sorceri的建議來直接更新根據您的標準,直接在SQL的另一個表中使用SQL。 – Blackhawk

+0

自從我使用Oracle之後,我非常喜歡這種方法,但是我收到了一個編譯錯誤,聲明期望結束語句。我試着用UPDATE和前面的引號。你給我的東西有沒有語法錯誤?我真的想讓它工作! – 985ranch

回答

0

好的,所以我猜這是一個表單模塊。問題是,它沒有線索你在找什麼要更新的記錄,所以你需要使用CurrentRecord財產

CurrentDb.Execute "UPDATE ProjectCompletion SET [ProjectCompletion].[Done] = -1 WHERE [ProjectCompletion].[ProjectCompID] = " & Me.Recordset.Fields("ProjectID").Value 
+0

你是對的,它的保存按鈕是在一個窗體(子窗體)。我完全按照你描述的方式做了。沒有編譯錯誤,但該框仍然沒有檢查它。我嘗試在Me.CurrentRecord之前添加「=」的右側來嘗試它,但是再次出現編譯錯誤。用你解釋它的方式,它如何知道哪個字段是外鍵? – 985ranch

+0

@ 985hunter CurrentRecord指向表單的當前記錄#,如果這些記錄不符合您的記錄ID,那麼我們需要獲取記錄ID。你可以顯示宏的刪除和保存,因爲這可能有助於確定如何獲得正確的記錄ID。 – Sorceri

+0

我已將它添加到我的問題中。我感謝你給我的幫助! – 985ranch