代码之家  ›  专栏  ›  技术社区  ›  Edward

来自的Access 2007错误3151DAO.OpenRecordSet文件. 如何修复?

  •  0
  • Edward  · 技术社区  · 6 年前

    好吧,这很有趣。我正在使用 MS-Access 2007

    来自使用 VBA

    DAO.OpenRecordset("{Sql query}" , DB_OPEN_DYNASET, dbSeeChanges)

    这个调用通常可以正常工作,但是我注意到当这个窗体关闭然后重新打开时,一个 3151 ODBC 生成错误。

    我们正在通过使用链接表 Access 2007 对于这份表格,我们的 SQL-Server 2012

    Microsoft SQL Server Management Studio                      11.0.2100.60
    Microsoft Analysis Services Client Tools                    11.0.2100.60
    Microsoft Data Access Components (MDAC)                     6.1.7601.17514
    Microsoft MSXML                                             3.0 6.0 
    Microsoft Internet Explorer                                 8.0.7601.17514
    Microsoft .NET Framework                                    4.0.30319.237
    Operating System                                            6.1.7601
    

    这个 DAO.OpenRecordset 调用在多个事件中使用。这是名单。

    On_Current , _AfterUpdate , Form_Unload

    访问2007 SQL-Server ,但似乎没有一个可行的解决方案。

    据我所知 3151

    有人有什么想法吗?

    9月14日针对评论,我增加了一些额外的代码。

    这是表格上的电话。它包含故障线路。

    Private Sub Form_Unload(Cancel As Integer)
    Dim ImportID
    Dim rst As DAO.Recordset
    Dim db As Database
    Set db = CurrentDb
    Set ImportID = Me.ImportID
    
    #This is the failing line below. 
    Set rst = db.OpenRecordset("SELECT [dbo_t_inspect].* FROM [dbo_t_inspect] WHERE [dbo_t_inspect].ImportID= " & ImportID & ";", DB_OPEN_DYNASET, dbSeeChanges)
    

    Private Sub Form_Current()
    Dim rst As DAO.Recordset
    Dim strImportID As String
    If IsNull(Me.ImportID) Then
        [Forms]![Inspection Receiving]![LabComplete].Visible = False
        [Forms]![Inspection Receiving]![LabPending].Visible = True
    Else
    strImportID = Me.ImportID
    
    Dim db As Database
    Set db = CurrentDb
        Set rst = db.OpenRecordset("SELECT [dbo_t_health].*, [dbo_t_health].ImportID FROM [dbo_t_health] WHERE ((([dbo_t_health].ImportID)=" & Me.ImportID & "));", DB_OPEN_DYNASET, dbSeeChanges)
    

    我不知道在哪里 DAO 在此解决方案中定义。在我的文件夹中找不到它的声明 Microsoft Office Access Class Objects

    准确的错误信息如下

    无法连接到{ODBC Connection Name}错误3151。

    然后我可以选择debug选项,调试器会将我带到尝试连接我正在使用的ODBC连接但失败的行。

    VBA 然后打开有问题的窗体。表格装好后我就把它关了。一旦我尝试重新打开表单,就会出现上面描述的错误。我单击后窗体仍会打开 Ok

    0 回复  |  直到 4 年前
    推荐文章