繁体   English   中英

通过VBA的Microsoft Access查询被重复吗?

[英]Microsoft Access Query through VBA gets repeated?

我的查询形式如下:

strSQL = "SELECT cityID FROM City WHERE Name =" & Chr(34) & Me.List60.Value & Chr(34) & ";"
Set qdf = CurrentDb.CreateQueryDef("QueryCityName", strSQL)
DoCmd.OpenQuery qdf.Name
Me.cityID = qdf

我想做的是运行以下查询(List60值是动态的)并将结果分配给文本框。 现在,查询第一次运行就完美无缺了,第二次是在重复查询中添加了错误(我检查是否有一个新查询保存在使用了查询值的查询中)。 所以这是我的问题:

如何避免保存查询并使它始终动态? 如何将此查询的结果分配给文本框(我的意思是示例中的qdf.Value不起作用)?

您不应在未检查查询是否存在的情况下创建查询,否则将发现错误。 您可以通过引用querydef来更改sql,而无需创建新查询。 但是,在这种情况下,您不需要查询,只需DLookUp。

DLookUp("cityID", "City", "Name ='" & Replace(Me.List60.Value,"'","''") & "'")

您可以将文本框控件源设置为Dlookup,如下所示:

=DLookUp("cityID", "City", "Name ='" & Replace(List60.Value,"'","''") & "'")

BTW名称是保留字,请勿在任何地方使用,它会引起难以置信的悲伤。

我用更少的代码做到了:

strSQL = "SELECT cityID FROM City WHERE Name =" & Chr(34) & Me.List60.Value & Chr(34) & ";"
Set rst = CurrentDb.OpenRecordset(strSQL)

现在,如果每个人都有相同的问题,只需使用:

rst![name_of_the_row_in_your_table]

就我而言,这是整篇文章:

strSQL = "SELECT cityID FROM City WHERE Name =" & Chr(34) & Me.List60.Value & Chr(34) & ";"
Set rst = CurrentDb.OpenRecordset(strSQL)
Me.cityID = rst![cityID]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM