Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 找不到Access Update QueryDef参数_Sql_Vba_Ms Access_Query Parameters - Fatal编程技术网

Sql 找不到Access Update QueryDef参数

Sql 找不到Access Update QueryDef参数,sql,vba,ms-access,query-parameters,Sql,Vba,Ms Access,Query Parameters,我正试图用QueryDef创建两个查询 此插入查询工作正常,我可以指定以下参数: Dim qryAddPackage作为字符串:qryAddPackage=”“&_ “插入'RMF_tblPackages'”&_ (`SystemID`、`DoD`、`DateCreated`、`LastModified`、`LastUpdatedBy`)和_ “值([SystemID]、[DoD]、NOW()、NOW()、[UID])” 使用CurrentDb.CreateQueryDef(vbNullStri

我正试图用QueryDef创建两个查询

此插入查询工作正常,我可以指定以下参数:

Dim qryAddPackage作为字符串:qryAddPackage=”“&_
“插入'RMF_tblPackages'”&_
(`SystemID`、`DoD`、`DateCreated`、`LastModified`、`LastUpdatedBy`)和_
“值([SystemID]、[DoD]、NOW()、NOW()、[UID])”
使用CurrentDb.CreateQueryDef(vbNullString,qryAddPackage)
.参数!SystemID.Value=cbbSystems.Value
.参数!DoD.Value=Me.txtDoD.Value
.参数!UID.Value=strGetUserID()
.执行
以
但是,在此更新查询中,我只能访问WHERE语句中的参数UID:

Dim qryUpdatePkg作为字符串:qryUpdatePkg=”“&_
“更新'RMF_tblPackages'”&_
"集合"及_
“`SystemID`=[SystemID],`DoD`=[DoD],`LastModified`=NOW(),`LastUpdatedBy`=[UID]”&_
“其中`PackageID`=[PackageID]”
使用CurrentDb.CreateQueryDef(vbNullString、qryUpdatePkg)
.Parameters(“SystemID”).Value=cbbSystems.Value
.参数!DoD.Value=Me.txtDoD.Value
.参数!UID.Value=strGetUserID()
.参数!PackageID.Value=Me.lbxPackages.Value
.执行DBSEE更改
以
在试图分配参数的每一行中,它只表示参数的名称不在集合中

我尝试过这样分配它们:

.Parameters(“PackageID”).Value=Me.lbxPackages.Value
也一样,但那也不行

我试着用一些数据运行更新查询,结果运行得很好,所以查询工作正常

.Params.count
返回1,因为它只识别一个参数


关于更新查询无法识别参数的原因,还有其他想法吗?

使用
[]
引用标识符。在Access中,backtick无效(与MySQL不同)。此外,列名和参数名使用相同的引号字符,因此必须为参数选择不同的名称。仅当名称与保留字或功能名称冲突时才需要引用标识符(如
日期
顺序
等)

Dim qryUpdatePkg作为字符串
qryUpdatePkg=“更新RMF\u tblPackages”&_
"集合"及_
“SystemID=prmSystemID,DoD=prmDoD,LastModified=Now(),LastUpdatedBy=prmUID”&_
“其中PackageID=prmPackageID”
使用CurrentDb.CreateQueryDef(vbNullString、qryUpdatePkg)
.Parameters(“prmSystemID”).Value=cbbSystems.Value
.参数!prmDoD.Value=Me.txtDoD.Value
.参数!prmUID.Value=strGetUserID()
.参数!prmPackageID.Value=Me.lbxPackages.Value
.执行DBSEE更改
以

在第一个查询中进行相同的更改。

使用
[]
引用标识符。在Access中,backtick无效(与MySQL不同)。此外,列名和参数名使用相同的引号字符,因此必须为参数选择不同的名称。仅当名称与保留字或功能名称冲突时才需要引用标识符(如
日期
顺序
等)

Dim qryUpdatePkg作为字符串
qryUpdatePkg=“更新RMF\u tblPackages”&_
"集合"及_
“SystemID=prmSystemID,DoD=prmDoD,LastModified=Now(),LastUpdatedBy=prmUID”&_
“其中PackageID=prmPackageID”
使用CurrentDb.CreateQueryDef(vbNullString、qryUpdatePkg)
.Parameters(“prmSystemID”).Value=cbbSystems.Value
.参数!prmDoD.Value=Me.txtDoD.Value
.参数!prmUID.Value=strGetUserID()
.参数!prmPackageID.Value=Me.lbxPackages.Value
.执行DBSEE更改
以

在第一个查询中执行相同的更改。

此SQL看起来像MySQL语法,而不是Access SQL。此SQL看起来像MySQL语法,而不是Access SQL。希望您不介意,我将“转义”更正为“引用标识符”术语;“转义”与例如字符串文字中的双引号字符有关。希望您不介意,我将“转义”改为“引号标识符”术语;“转义”与字符串文字中的单引号字符加倍有关。