我在Access 2000 VBA中看到这样的错误代码:
-2147352567 - “[SomeTable]”中的记录已被其他用户删除。
所以,2个问题:
1)如何处理/避免这样的错误代码?
2)任何人都可以解释为什么我会收到MS文档中似乎不存在的错误代码?有没有办法破译这段代码?它是几个代码的组合吗?有关该主题的任何指导将不胜感激。
Public Sub Form_Open(Cancel As Integer)
' Check for unposted record / regardless of Date / Shift
' If there is an unposeted record goto it
Dim lCheck
Dim sPress As String
On Error GoTo Form_Open_Err
GotoRecord:
If bPressConsumptionOpenRan = True Then
lCheck = DLookup("PressConsumptionID", "spI_GetUnPostedRecord")
If Not IsNothing(lCheck) Then
Me.txtPressConsumptionID.SetFocus
DoCmd.FindRecord lCheck
Else
DoCmd.SetWarnings False
DoCmd.OpenQuery ("spI_InsertNewPressConsumption")
Me.Requery
DoCmd.SetWarnings True
End If
End If
Form_Open_Exit:
Exit Sub
Form_Open_Err:
sErrMsg = Err.Number & "-" & Err.Description
MsgBox sErrMsg, vbCritical + vbOKOnly + vbInformation, "Program Error"
所以我刚评论了
On Error GoTo
Form_Open(),Form_Load()和Form_Activate()中的行,仍然没有调试器调用。打开db时会显示此错误,因此我不知道错误在代码中的其他位置。
以下是IsNothing的代码:
Public Function IsNothing(vCheck As Variant) As Boolean
On Error GoTo IsNothing_Err
If IsNull(vCheck) Then IsNothing = True: Exit Function
If IsEmpty(vCheck) Then IsNothing = True: Exit Function
If Trim(vCheck) = "" Then IsNothing = True: Exit Function
IsNothing_Err:
IsNothing = False
End Function
现在我在Form_Current()中遇到类似的错误:
Private Sub Form_Current()
Dim sUser As String
On Error GoTo Form_Current_Err
If IsNothing(Me.dtpUsageDate) Then
Me.dtpUsageDate = Date 'This line throws error.
End If
...Ommitted to save space. Not relevant...
Form_Current_Err:
sErrMsg = Err.Number & "-" & Err.Description
MsgBox sErrMsg, vbCritical + vbOKOnly + vbInformation, "Program Error"
Resume Form_Current_Log
Form_Current_Log:
On Error Resume Next
Call LogError(sErrMsg, "PressConsumptions_Form_Current")
GoTo Form_Current_Exit
End Sub
错误讯息:
-2417352567 - 此控件中没有对象。
这条消息与我们见过的另一条消息有关吗?有关纠正的任何想法吗?
答案 0 :(得分:0)
错误号和消息告诉我这是来自Access之外的问题。您正在执行一个保存的查询,该查询的名称表明它在数据库服务器上运行SPROC,这表明后端是SQL Server或其他后端。
如果后端表中没有主键和时间戳字段,则在Access中这是一个非常常见的错误。这是因为Access无法确切地确定涉及哪条记录并且无法正确刷新显示。拥有PK和时间戳字段通常可以解决问题。
但当然可能是由别的东西引起的。