访问VBA错误0(零)

时间:2014-03-20 00:14:37

标签: vba sharepoint error-handling ms-access-2007 access-vba

我有一个Access 2007数据库。它使用SharePoint 2010链接列表作为表。我有多个表单,不断收到错误号“0”。我在这些情况下遇到此错误:

  • 单击使用SharePoint列表作为其源的comboBox,然后键入不在列表中的文本。 (“限制列表”属性必须为true)。如果此属性为false,那么我不会收到错误,一切正常,但必须将此特定数据库设置为true。

  • 失去与SharePoint的连接,然后单击使用SharePoint列表作为其来源的对象(comboBox等)。 “Got_Focus”子中有代码从列表中提取数据。

如果我发现错误编号0并处理完毕,则会立即显示真实描述。例如,在捕获0之后的第一个场景中,将显示错误“item not on list”框,这是一个真正的错误(2237),第二个是“找不到记录源”框,将显示错误2580.但是,我无法捕捉到这些错误,如果我在收到错误0后放入一个消息框显示错误号,它就不会显示/或激活。

当“限制列表”属性设置为true时,似乎我始终得到错误0。我试过“On_Load”子集将Limit to List设置为true,并将“On_close”设置为false,但这会导致错误无法在“On_Close()”子上找到对象。这是一个示例:

   Private Sub Got_Focus()

   On Error GoTo catchError

   Me.Requery    \\This could be any code that "pings" the SharePoint List

  exit_catchError:
  Exit Sub

  catchError:

  If Err.Number = 0 Then Resume Next \\i'v tried with and without this. Gives error 20 with
                                           \\ Also tried If Then with Err.Number = 0
  If Err.Number = 2580 Then              \\Doesn't catch
     MsgBox "Reconnect to SharePoint"
  ElseIf Err.Number = 2237 Then          \\Doesn't catch
     MsgBox "Text not on List"
  Else
     MsgBox Err.Number & " " & Err.Description
  End If

  End Sub

3 个答案:

答案 0 :(得分:4)

错误代码0表示没有错误条件。我唯一一次看到关于错误0的消息框是我错过了在错误处理程序之前放置Exit Sub的时候。如果从上面的代码中取出Exit Sub,则子的主体将运行,然后错误处理程序将启动。将运行Else子句,提示其中只包含0的消息框。这有可能吗?

答案 1 :(得分:0)

我使用DataErr而不是Err.Number修复它。我还拿出了else语句来显示一个msgbox。它现在似乎工作得很好。

答案 2 :(得分:0)

我只是跟踪了这样的内容,只要控件的来源是公式,我就会在控件中显示“错误0”;但如果它只是一个表列,它没有错误。例如,如果控件的源是“[colA]”,则不会显示错误消息。如果控件的来源是“= [colA]”,则收到“错误0”消息。问题原来是控件默认为“colA”这个名字。解决方法是重命名控件。