Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 将表名和字段名作为字符串传递给函数_Ms Access_Vba - Fatal编程技术网

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