Sql 运行时错误';3144';:Update语句中的语法错误
我的update语句遇到了一些问题,Add语句似乎可以工作,但我在update中不断遇到语法错误。我是SQL和VBA新手,所以很多这类代码可能看起来像sphagetti代码。如果有人能认出我做错了什么,我将不胜感激。如果有更好的方法,请告诉我Sql 运行时错误';3144';:Update语句中的语法错误,sql,ms-access,vba,Sql,Ms Access,Vba,我的update语句遇到了一些问题,Add语句似乎可以工作,但我在update中不断遇到语法错误。我是SQL和VBA新手,所以很多这类代码可能看起来像sphagetti代码。如果有人能认出我做错了什么,我将不胜感激。如果有更好的方法,请告诉我 Private Sub btnSubmit\u Click() 将名称设置为字符串 将办公室设置为字符串 按字符串排列 Dim mbrOpType作为字符串 作为字符串的Dim mbrRLA Dim mbrMQT作为字符串 将MBR位置设置为字符串 Dim
Private Sub btnSubmit\u Click()
将名称设置为字符串
将办公室设置为字符串
按字符串排列
Dim mbrOpType作为字符串
作为字符串的Dim mbrRLA
Dim mbrMQT作为字符串
将MBR位置设置为字符串
Dim sqlAdd As字符串
Dim sqlUpdate作为字符串
如果Me.opgmnglotster.Value=1,则
'-如果为空,则将中间名设置为NMI
如果IsNull(Me.txtMidInit.Value),则
Me.txtmidini.Value=“NMI”
如果结束
'-创建所有大写的成员名称字符串
mbrName=UCase(Me.txtLastName.Value&“,”&Me.txtLastName.Value&“&Me.txtmidini)
"议员办事处
mbrOffice=Me.cbxOffice.Value
"议员职级
mbrank=Me.cbxRank.Value
“-成员的运算符类型
mbrOpType=Me.cbxOpType
“-成员的RLA
mbrRLA=Me.cbxRLA.Value
'-成员的MQT程序
mbrMQT=Me.cbxMQT.Value
'-成员的MQT位置
mbrPos=Me.cbxTngPos.Value
'将成员添加到名册中
sqlAdd=“插入[名册](成员、办公室、职级、操作类型、RLA、[MQT-PROGRAM]、[MQT-POSITION])值(“&mbrName&”、“&MBROOFFICE&”、“&mbrRank&”、“&mbrOpType&”、“&mbrRLA&”、“&mbrMQT&”、“&mbrPos&”);”
DoCmd.RunSQL(sqlAdd)
“-确认消息
MsgBox(“添加:”&mbrName)
其他的
'-如果为空,则将中间名设置为NMI
如果IsNull(Me.txtMidInit.Value),则
Me.txtmidini.Value=“NMI”
如果结束
'-创建所有大写的成员名称字符串
mbrName=UCase(Me.txtLastName.Value&“,”&Me.txtLastName.Value&“&Me.txtmidini)
"议员办事处
mbrOffice=Me.cbxOffice.Value
"议员职级
mbrank=Me.cbxRank.Value
“-成员的运算符类型
mbrOpType=Me.cbxOpType
“-成员的RLA
mbrRLA=Me.cbxRLA.Value
'-成员的MQT程序
mbrMQT=Me.cbxMQT.Value
'-成员的MQT位置
mbrPos=Me.cbxTngPos.Value
'更新成员数据
sqlUpdate=“更新[花名册](成员、办公室、职级、操作类型、RLA、[MQT-PROGRAM]、[MQT-POSITION])值(“&mbrName&”、“&MBROOFFICE&”、“&mbrOpType&”、“&mbrRLA&”、“&mbrMQT&”、“&mbrPos&”)
调试。打印sqlUpdate
DoCmd.runsqlupdate
MsgBox(“更新:&mbrName”)
如果结束
端接头
设置中的一些常规编码和特定MS访问问题:
If
和Else
块重复VBA变量赋值。使用干er代码(Don'tRepeatY我们自己)参数
子句将查询保存为存储对象(仅符合MS Access SQL方言)。这有助于从数据中抽象代码updateset=…
参数成员参数文本、办公室参数文本、等级参数文本、操作类型参数文本、,
RLA_参数文本、MQT_程序_参数文本、MQT_位置_参数TXT;
插入[名册](成员、办公室、职级、OPTYPE、RLA、[MQT-PROGRAM]、[MQT-POSITION])
值(成员参数、办公室参数、等级参数、操作类型参数、,
RLA_参数、MQT_程序_参数、MQT_位置_参数);
更新SQL查询(使用参数化,一次保存为存储查询)
参数成员参数文本、办公室参数文本、等级参数文本、操作类型参数文本、,
RLA_参数文本、MQT_程序_参数文本、MQT_位置_参数TXT;
更新[名册]
设置成员=成员参数,办公室=办公室参数,等级=等级参数,
OPTYPE=OPTYPE_-Param,RLA=RLA_-Param,[MQT-PROGRAM]=MQT_-PROGRAM_-Param,
[MQT-POSITION]=MQT_位置_参数;
VBA(未显示SQL)
name作为字符串,myquery作为字符串,mymsg作为字符串
Dim qdef作为QueryDef
'-如果为空,则将中间名设置为NMI
如果IsNull(Me.txtMidInit.Value),则
Me.txtmidini.Value=“NMI”
如果结束
'-创建所有大写的成员名称字符串
mbrName=UCase(Me.txtLastName.Value&“,”&Me.txtLastName.Value&“&Me.txtmidini)
如果Me.opgmnglotster.Value=1,则
myquery=“MyRosterinerQuery”
mymsg=“添加:”&mbrName
其他的
myquery=“MyRosterUpdate查询”
mymsg=“更新:”&mbrName
如果结束
'分配给存储查询
Set qdef=CurrentDb.querydfs(myquery)
“绑定参数
qdef!成员参数=mbrName
qdef!OFFICE_Param=Me.cbxOffice.Value
qdef!RANK_Param=Me.cbxRank.Value
qdef!OPTYPE_Param=Me.cbxOpType
qdef!RLA_Param=Me.cbxRLA.Value
qdef!MQT_PROGRAM_Param=Me.cbxMQT.Value
qdef!MQT_POSITION_Param=Me.cbxTngPos.Value
qdef.executedbfailonerror
“-确认消息
MsgBox mymsg,vb信息
设置qdef=Nothing
Check update statement您正在使用类似于insert的语句,有关使用参数化查询的AxisLookup文档,而不是像这样手动连接字符串。那是一种可怕的离开方式