首页 > 解决方案 > 将表名和字段名作为字符串传递给函数

问题描述

我有一个包含许多表的数据库,我正在尝试检查给定表的 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

本地窗口显示两个字符串都已通过,但我仍然收到运行时错误。我忽略了什么吗?

标签: ms-accessvba

解决方案


要在这些情况下使用变量,请使用括号:

If IsNull(myTable(fieldName)) Then

但请注意,更有效的方法是使用查询:

x = DCount("*", tableName, "[" & fieldName & "] IS NULL")

推荐阅读