我有一个创建记录集的子。使用记录集中的值调用函数。目标是使用记录集中的多个值,但是,记录集值有可能为空,然后函数调用将导致错误:“无效使用 Null”。为处理此错误,每次检查记录集值是否为空值时,如果为空,则将其替换为空字符串。但是,我编写此程序的方式感觉非常低效,当稍后需要检查十多个参数时更是如此。有没有办法更有效地做到这一点?
我跳过了代码的最后一部分,因为这不是理解我的问题所必需的。我已将其替换为......如果需要,我将编辑并提供完整代码。
Sub CallFunctionWithArray()
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim arrValues(1 To 3) As Variant
Set conn = New ADODB.Connection
conn.Open "provider=Microsoft.JET.OLEDB.4.0;Data Source=" & CurrentProject.Path & "\Northwind.mdb"
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM CustomersCopy", conn, adOpenForwardOnly, adLockReadOnly, adCmdText
If Not (rst.EOF And rst.BOF) Then
rst.MoveFirst
Do Until rst.EOF = True
If IsNull(rst![CompanyName]) Then
arrValues(1) = ""
Else
arrValues(1) = rst![CompanyName]
End If
If IsNull(rst![DateTest]) Then
arrValues(2) = ""
Else
arrValues(2) = rst![DateTest]
End If
If IsNull(rst![INTTest]) Then
arrValues(3) = ""
Else
arrValues(3) = rst![INTTest]
End If
Call ReturnValuesOfArray(arrValues(1), arrValues(2), arrValues(3))
.........
End Sub
Function ReturnValuesOfArray(ByVal ValueOne As String, ByVal ValueTwo As String, ByVal ValueThree As String)
Debug.Print "Waarde variabele 1: " & ValueOne
Debug.Print "Waarde variabele 2: " & ValueTwo
Debug.Print "Waarde variabele 3: " & ValueThree
End Function
代码没有问题,它做了它应该做的事情。但是,当真正使用它时,我将向函数传递更多参数。