我已经继承了VBA项目,并试图调试我收到的错误:Invalid use of Null
。过了一段时间,我找到了发生错误的地方,但还没有找到问题的具体罪魁祸首和/或解决方案。请参阅以下的这段(行抛出异常标注有评论):VBA无效使用null
Dim db As Database, wsp As Workspace
Dim retVal As Variant
Dim tableType As Long
'Check to see if the table name exists in the zLinked_Tables table; if it does, that means its a SQL table
If DCount("*", "[zLinked_Tables]", "[LocalName] = '" & TableName & "' AND [ObjectType] = 'Table'") > 0 Then
'SQL Table
retVal = ExecuteSPT("TRUNCATE TABLE [" & TableName & "]", 0) 'truncate the table via passthrough query on server
If KeyColumn <> "" Then
retVal = ExecuteSPT("DBCC CHECKIDENT([" & TableName & "],RESEED,1)", 0) 'reset the identity column value via passthrough query on server
End If
Else
'MS Access Table
tableType = DLookup("[Type]", "[MSysObjects]", "[Name] = '" & TableName & "'")
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM [" & TableName & "]" 'delete all records from table
If KeyColumn <> "" Then
DoCmd.SetWarnings True
If tableType = 1 Then 'Resident/Local
Set db = CurrentDb
db.Execute "ALTER TABLE [" & TableName & "] ALTER COLUMN [" & KeyColumn & "] COUNTER(1,1)"
Else 'Linked Table
Set wsp = DBEngine.Workspaces(0)
Set db = wsp.OpenDatabase(DLookup("[Database]", "[MSysObjects]", "[Name] = '" & TableName & "'")) 'ERROR THROWN ON THIS LINE
db.Execute "ALTER TABLE [" & TableName & "] ALTER COLUMN [" & KeyColumn & "] COUNTER(1,1)" 'reset the autonumber column value
End If
DoCmd.SetWarnings False
Set db = Nothing
End If
End If
Exit Function
注意,我已检查了TableName
变量,它不为空,这是一个有效的表名