2012-07-30 149 views
0

我想創建一個更新查詢,接受需要更新的值的參數。我查詢:訪問2010年更新查詢錯誤

PARAMETERS FirstName Text (255), LastName Text (255), AccessLevel Short; 
UPDATE 
tblUser SET tblUser.FName = [FirstName], 
tblUser.LName = [LastName], 
tblUser.AccessLevelID = [AccessLevel] 
WHERE (((tblUser.UserID)=[Forms]![frmEditUser]![subfrmUsers].[Form]![UserID])); 

我的VBA代碼運行時的編輯按鈕被用戶推:

If valid Then 
    DoCmd.SetParameter "FirstName", Forms!frmEditUser!txtFName 
    DoCmd.SetParameter "LastName", Forms!frmEditUser!txtLName 
    DoCmd.SetParameter "AccessLevel", Forms!frmEditUser!cmbAccessLevel 
    DoCmd.OpenQuery ("qryEditUserRecord") 
    MsgBox "Success: Record edits have been applied", _ 
     vbOKOnly, "Record Edits Success" 
    Me.Refresh 
End If 

有效的僅僅是一個布爾值,當所有的控件有數據,是真實的。錯誤是:

The object does not contain the Automation object "Drew" 

其中Drew是當前記錄的FName值。此錯誤發生在第一個SetParameter命令,我不知道該問題或如何解決它。如果我在VBA代碼外面提示,查詢就會按預期運行,但這正是我需要的工作。

+0

這似乎是一個非常漫長而複雜的方式,將子窗體中的值更改爲主窗體中的值,我看不出爲什麼要這樣做。 – Fionnuala 2012-07-30 18:25:59

回答

0

原來有,我發現這裏http://social.msdn.microsoft.com/Forums/en-ZA/accessdev/thread/8538bd05-abc3-4cad-b284-bcbf7fa3dd69

當一個字符串參數DoCmd.Parameter「對」,「」,「」 & Me.txtName &「」「」

處理一個非常直觀的解決方案

我不知道爲什麼它需要四個雙引號和一個&,但它確實如此。

+0

您的查詢不包圍帶引號的字符串參數(FName和LName)。這意味着您需要將這些引號包含在參數中。您使用&符號(VB/VBA運算符)連接輸入字符串周圍的引號。當你在一個字符串中加雙引號時,你需要用VB/VBA中的另一個雙引號將它們轉義。希望這是有道理的。 – 2014-09-04 14:36:28