2017-08-09 6 views
0

ヘルプは、私はPARKING_STATUS UPDATED場で私のテーブルPARKINGを更新したいが、私はエラーを得ました。私は同じテーブルからすべてを取り出します。フォームのすべてのフィールドは同じテーブルのものですPARKING、PKとFKは他のテーブルと同じです。これはコードです:アクセスVBA更新1台、複数のフィールド

Private Sub Approve_Btn_Click() 

    'update data into table(s) 
    CurrentDb.Execute "UPDATE PARKING" 
    "SET(parking_id= '" & Me.lot_num_dropdown & "', parking_status = '" & "UPDATED" & "', car_reg_num = '" & Me.car_reg_num_dropdown & "', result_id = '" & Me.result_id_dropdown & "')" & _ 
    "WHERE parking_id = '" & Me.lot_num_dropdown & "'" 

End Sub 
+1

SQLコマンド 'SET'と' WHERE'の前後にスペースが必要です。 – Parfait

答えて

1

querydef parameterziationと、安全でクリーン、そしてより保守バージョンを考えてみましょう。引用符や文字列の連結は必要ありません。

パラメータ値を、準備されたSQL文にバインドするだけです。代わりに、VBA文字列ではなくデータベースに保存されたクエリを使用できます。

Private Sub Approve_Btn_Click() 
    Dim qdef As QueryDef 

    sql = "PARAMETERS idparam LONG, statusparam TEXT(255), carregparam TEXT(255), resultidparam LONG;" _ 
      & " UPDATE PARKING SET parking_id = [idparam], parking_status = [statusparam]," _ 
      & "     car_reg_num = [carregparam], result_id = [resultidparram]" _ 
      & " WHERE parking_id = [idparam]" 

    ' assign prepared statement to qdef object 
    Set qdef = CurrentDb.CreateQueryDef("", sql) 'OR Set qdef = CurrentDb.QueryDefs("mySavedQuery") 

    ' bind named parameters 
    qdef!idparam = Me.lot_num_dropdown 
    qdef!statusparam = "UPDATED" 
    qdef!carregparam = Me.car_reg_num_dropdown 
    qdef!resultidparam = Me.result_id_dropdown 

    ' execute action query 
    qdef.Execute dbFailOnError 

    Set qdef = Nothing 
End Sub 
関連する問題