我已經繼承了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
變量,它不爲空,這是一個有效的表名