2016-05-23 227 views
0

我写一段简单的SQL查询的在我的测试数据库更新表,但我遇到的问题:访问VB错误3061:参数太少,预计1

Public Sub UpdateStatus(TypeName As String) 
Dim DBase As Database 
Dim SQLCommand As String 
Dim qdfChange As QueryDef 
SQLCommand = "Update Case SET Status = 1 WHERE TypeName = '" & TypeName & "';" 
Debug.Print SQLCommand 

Set DBase = OpenDatabase("C:\TestDatabase\CaseSet.accdb") 
Set qdfChange = DBase.CreateQueryDef("", SQLCommand) 
qdfChange.Execute 
End Sub 

在表中的字段名大小写匹配我的SQL查询中的。

(如果这是任何值,此功能属于一种形式)

+0

你能直接运行你的SQL吗?您的实际列/表名称是Access中的保留字吗?什么数据类型是'bar'和'foo'? – JNevill

+0

foo是数字,酒吧是短文本 – Eddy

+0

'bar'是否正确设置?你可以在'SQLCommand ='行上放一个断点并确认'bar'有一个值吗? – JNevill

回答

1

Case is a reserved word and TypeName is a VBA Function.这使得他们选择不当的数据库对象名称。

如果您不能重命名它们,请在SQL语句中包含这些名称,以便数据库引擎将它们识别为对象名称。

SQLCommand = "Update [Case] SET Status = 1 WHERE [TypeName] = '" & TypeName & "';"