在VBA中的这个SQL语句中是否有任何错误:
myConnection.Execute "update item_gallery set quantity = 'qtToTotal' where item = 'Desc' and gallery ='Gallery_Name'"
where
qtToTotal = qtTo + qtFrom
While Not myRecordSetItem.EOF
If !item_ID = myRecordSetItem.Fields("item_ID").Value Then
Desc = myRecordSetItem.Fields("Desc").Value
End If
myRecordSetItem.MoveNext
Wend
While Not myRecordSetGallery.EOF
If !To = myRecordSetGallery.Fields("Gallery_ID").Value Then
Gallery_Name = myRecordSetGallery.Fields("Gallery_Name").Value
End If
myRecordSetGallery.MoveNext
Wend
它总是给我留言:
“条件表达式中的数据类型不匹配”
答案 0 :(得分:0)
此:
myConnection.Execute "update item_gallery set quantity = 'qtToTotal' where item = 'Desc' and gallery ='Gallery_Name'"
where
qtToTotal = qtTo + qtFrom
看起来它应该更像这样(但我不是100%,因为我有一些问题要问):
myConnection.Execute "UPDATE item_gallery" _
& " SET quantity = qtToTotal" _
& " WHERE item = Desc" _
& " AND gallery = Gallery_Name" _
& " AND qtToTotal = (qtTo + qtFrom)"
我猜你是因为你用单引号('
)包围了字段名称而得到这个错误,这就是你在告诉SQL时所做的事情您需要一段文本而不是数据库中的某个字段。
何时使用单引号的示例:
...如果您只想在格式为文本的字段中引用一段文字:
"SELECT * FROM tblNames WHERE FirstName = 'John'"
。...当您想要引用当前位于格式为文本的打开表单上的字段中的文字时:
"SELECT * FROM tblNames WHERE FirstName = '" & Me.txtFirstName & "'"
。
但在您的情况下,您似乎想要从基础表中获取字段,因此您不需要在字段名称周围添加任何单引号。
您的quantity
字段听起来很可能是一个数字字段,您基本上要求它尝试放置一段文字" qtToTotal"在quantity
字段中,如果该字段仅设置为接受数字,则无法执行此操作。
虽然有几个问题,但我怀疑这里可能会有更多问题(我会根据您的回答更新此问题):
所有这些领域都是......
...位于表格 item_gallery ?
如果他们不是那么你需要在 item_gallery 表和其他字段来自的任何表中使用SQL语句创建JOIN
(s)匹配/关联两个表中记录的字段。
如果您在2个字段之间使用了=
,那么这两个字段的数据类型是否相同?否则会导致不匹配。
:我建议不要使用" Desc"作为字段名称DESC
是为"降序"保留的字。在SQL中的ORDER BY
子句中。