通过VBA的Microsoft Access查询重复?

时间:2010-12-22 21:46:48

标签: ms-access vba

我以我的形式得到了这个查询:

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值是动态的)并将结果分配给文本框。现在查询第一次运行完美,第二次是关于重复查询的spuwing错误(我检查Querys中使用已使用的值保存了新查询)。所以这是我的问题:

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

2 个答案:

答案 0 :(得分:2)

您不应该在不检查它是否存在的情况下创建查询,否则您将收到错误,如您所发现的那样。您可以通过引用querydef来更改sql,您不需要创建新查询。但是,在这种情况下,您不需要查询,只需要DLookUp。

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

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

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

BTW名称是一个保留字,不应该在任何地方使用,它会引起无尽的悲痛。

答案 1 :(得分:1)

我用更少的代码做到了:

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]