Ms access 将表名和字段名作为字符串传递给函数
我有一个包含许多表的数据库,我正在尝试检查给定表的空值。我没有为每个表编写函数,而是尝试将表名和字段名作为字符串传递给一个函数(这样一个函数可以在所有表上工作) 我可以通过表名而不是字段名来实现这一点。我收到运行时错误“未在此集合中找到项”Ms access 将表名和字段名作为字符串传递给函数,ms-access,vba,Ms Access,Vba,我有一个包含许多表的数据库,我正在尝试检查给定表的空值。我没有为每个表编写函数,而是尝试将表名和字段名作为字符串传递给一个函数(这样一个函数可以在所有表上工作) 我可以通过表名而不是字段名来实现这一点。我收到运行时错误“未在此集合中找到项” 将myDb作为DAO.Database公开 作为DAO.Recordset的公共myTable 公共子验证字段() 选中NULL“表名”、“字段名” 端接头 Public Sub checkNull(ByVal tableName作为字符串,ByVal fi
将myDb作为DAO.Database公开
作为DAO.Recordset的公共myTable
公共子验证字段()
选中NULL“表名”、“字段名”
端接头
Public Sub checkNull(ByVal tableName作为字符串,ByVal fieldName作为字符串)
设置myDb=CurrentDb
'============
“表名|”检查“字段名”列是否为空值
'============
Set myTable=CurrentDb.OpenRecordset(tableName)
myTable.MoveFirst
直到myTable.EOF为止
如果IsNull(myTable![&fieldName&]),则“要在这些情况下使用变量,请使用括号:
If IsNull(myTable(fieldName)) Then
但请注意,更有效的方法是使用查询:
x = DCount("*", tableName, "[" & fieldName & "] IS NULL")
这个符号是“bang符号”。条
部分看起来像一个普通的标识符,但对VBA来说,它是一个字符串文字-这就是为什么不能这样做:
If IsNull(myTable![ & fieldName & ]) Then
砰的一声foo!bar
相当于foo.DefaultItemPropertyWithStringIndexer(“bar”).DefaultProperty
。因此:
If IsNull(myTable.Fields(fieldName).Value) Then
应该很好用。较短的myTable(fieldName)
表示法完全相同,只是所有这些显式成员调用都是隐式的。我个人更喜欢说它做什么,做它说什么的代码
不过,就访问权限而言,这是一条路。谢谢你们两位!你是对的,我想我会坚持第二个例子
If IsNull(myTable![ & fieldName & ]) Then
If IsNull(myTable.Fields(fieldName).Value) Then