ms-access - 将表名和字段名作为字符串传递给函数
问题描述
我有一个包含许多表的数据库,我正在尝试检查给定表的 Null 值。我没有为每个表编写一个函数,而是尝试将表名和字段名作为字符串传递给一个函数(以便一个函数适用于所有表)。
我可以使用表名而不是字段名来完成此操作。我收到“在此集合中找不到项目”的运行时错误
Public myDb As DAO.Database
Public myTable As DAO.Recordset
Public Sub verifyFields()
checkNull "Table Name", "Field Name"
End Sub
Public Sub checkNull(ByVal tableName As String, ByVal fieldName As String)
Set myDb = CurrentDb
'============
'Table Name | 'Check if Column "Field Name" for null values
'============
Set myTable = CurrentDb.OpenRecordset(tableName)
myTable.MoveFirst
Do Until myTable.EOF
If IsNull(myTable![ & fieldName & ]) Then'<--Error is thrown here
x = x + 1
blanksFound = True
End If
myTable.MoveNext
Loop
If blanksFound = True Then
aaa = MsgBox(x & " Blanks found.", vbOKOnly, blankField.Name)
End If
本地窗口显示两个字符串都已通过,但我仍然收到运行时错误。我忽略了什么吗?
解决方案
要在这些情况下使用变量,请使用括号:
If IsNull(myTable(fieldName)) Then
但请注意,更有效的方法是使用查询:
x = DCount("*", tableName, "[" & fieldName & "] IS NULL")
推荐阅读
- java - Windows 10 上 64 位 dll 的无效内存访问仅使用 java11
- javascript - How do I sort an array based on the attribute of corresponding elements of another array using Javascript?
- php - 无法从 Doctrine PHP 连接到 AWS 上的 MySQL 实例
- jquery - 通过 jQuery 将 div 用作模态对话框的最简单方法
- ms-access - 控件源的表达式生成器中的错误消息“文本太长无法编辑”
- javascript - React 防止全局样式影响组件
- java - 有没有办法强制测试一种方法?
- java - 如何覆盖一些 java.sql.connection 方法,如 prepareStatement createStatement 或 prepareCall?
- javascript - jQuery UI Slider 更新步骤属性但不起作用
- html - HTML - 预加载密钥请求 - 这种语法可以改进吗?