![](/img/trans.png)
[英]How can one set parameter values of an INSERT SQL query through VBA in 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.