0

更新が必要な値のパラメーターを受け入れる更新クエリを作成しようとしています。私のクエリ:

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  

valid は、すべてのコントロールにデータがある場合に true になる単なるブール値です。エラーは次のとおりです。

The object does not contain the Automation object "Drew"  

Drew は現在のレコードの FName 値です。このエラーは最初の SetParameter コマンドで発生し、私は問題やその修正方法を認識していません。VBAコードの外側でプロンプトを表示すると、クエリは期待どおりに実行されますが、これが機能するために必要なものです。

4

1 に答える 1

0

私がここで見つけた非常に直感的でない解決策があることがわかりましたhttp://social.msdn.microsoft.com/Forums/en-ZA/accessdev/thread/8538bd05-abc3-4cad-b284-bcbf7fa3dd69

文字列パラメータを扱う場合、DoCmd.Parameter "para", """" & Me.txtName & """"

4 つの二重引用符と & が必要な理由はわかりませんが、必要です。

于 2012-07-30T18:19:57.007 に答える