使用access vba计算sql查询结果中的行数
我正在尝试使用access 2007 vba计算sql查询结果中的行数。 我所拥有的是一个名为使用access vba计算sql查询结果中的行数,sql,ms-access,ms-access-2007,vba,Sql,Ms Access,Ms Access 2007,Vba,我正在尝试使用access 2007 vba计算sql查询结果中的行数。 我所拥有的是一个名为AGN的文本框,当用户在其上输入值时,请检查该值,如果该值已插入,则返回MsgBox。我想做的是: Dim rs As DAO.Recordset Dim db As Database Dim strSQL As String Set db = CurrentDb strSQL = "SELECT agencies.[agency no] FROM agencies WHERE agen
AGN
的文本框,当用户在其上输入值时,请检查该值,如果该值已插入,则返回MsgBox
。我想做的是:
Dim rs As DAO.Recordset
Dim db As Database
Dim strSQL As String
Set db = CurrentDb
strSQL = "SELECT agencies.[agency no] FROM agencies WHERE agencies.[agency no]= " &Me.AGN.Text
Set rs = db.OpenRecordset(strSQL)
If rs.Fields.Count > 1 Then
MsgBox "this value is already here "
End If
Set rs = Nothing
当我在文本框中插入任何值时,出现运行时错误3061(参数太少)错误消息“参数太少”通常意味着SQL语句中存在Access无法识别为字段、表、函数或SQL关键字的内容。在这种情况下,如果[agency no]
是文本而不是数字数据类型,则可能发生这种情况。如果是这种情况,则在构建SQL语句时,将AGN
的值用引号括起来。(也可以使用参数查询来避免引用文本值。)
strSQL=“从代理中选择一个[代理编号]作为”&vbCrLf&_
“其中,[机构编号]='”&Me.AGN.Value&'”
调试.打印strSQL
如果出现故障,请转到即时窗口,并从Debug.Print
复制输出。然后可以在Access查询设计器中创建新查询,切换到SQL视图并粘贴到语句文本中进行测试
一旦选择
起作用,就可以检查记录集是否为空。当它为空时,其BOF
和EOF
属性均为真。因此,要检测它何时不是空的,请检查是否有not(BOF和EOF)
带rs的
如果不是(.BOF和.EOF),则
MsgBox“此值已存在”
如果结束
以
但是,您实际上不需要打开记录集来确定是否存在匹配行。您可以检查DCount
表达式返回的值
Dim lng的长度与
lngrowth=DCount(“*”、“agencies”、“[agency no]=”、“&Me.AGN.Value&“”)
如果Ln大于0,则
MsgBox“此值已存在”
如果结束
注:
AGN.Value
而不是AGN.Text
,因为.Text
属性只有在控件具有焦点时才可访问。但是我不知道你在哪里使用检查代码,所以不确定哪个是适合你的选择SELECT
查询和DCount
选项之间的相似性。在两者之间进行翻译通常很容易[agency no]列是数字类型,我希望它执行的任务是检查查询是否返回任何行