【问题标题】:access vba update one table, multiple fields访问vba更新一个表,多个字段
【发布时间】:2017-08-10 03:58:15
【问题描述】:

帮助,我想用字段 PARKING_STATUSUPDATED 更新我的表 PARKING,但我得到了错误。我从同一张桌子上取所有东西。表单中的所有字段都来自同一个表PARKING,PK 和FK 与其他表。这是代码:

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

【问题讨论】:

  • SQL命令SETWHERE前后需要空格。

标签: sql vba ms-access


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    相关资源
    最近更新 更多