访问VBA抛出未列出的错误代码

时间:2011-01-25 15:49:26

标签: ms-access vba access-vba

我在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 - 此控件中没有对象。

这条消息与我们见过的另一条消息有关吗?有关纠正的任何想法吗?

1 个答案:

答案 0 :(得分:0)

错误号和消息告诉我这是来自Access之外的问题。您正在执行一个保存的查询,该查询的名称表明它在数据库服务器上运行SPROC,这表明后端是SQL Server或其他后端。

如果后端表中没有主键和时间戳字段,则在Access中这是一个非常常见的错误。这是因为Access无法确切地确定涉及哪条记录并且无法正确刷新显示。拥有PK和时间戳字段通常可以解决问题。

但当然可能是由别的东西引起的。