0

我有这个奇怪的错误,它似乎只在一个大查询(即,有很多连接)之后出现,而不是在单个表上的小查询上发生。

这是我的设置:

  1. VB .NET 3.5 应用程序
  2. 使用以下连接语句连接到 Access 数据库:

    Me.connection = "Provider=Microsoft.Ace.OLEDB.12.0;" & _ "User ID=Admin;" & _ "Data Source=" & ACCESS07_CONNECTION_STRING & ";" & _ "Mode=Read|Write;Extended Properties="""";Jet OLEDB:System Database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"

  3. (完整的代码行在底部)

  4. 该数据库是共享网络驱动器上的一个 Access 文件(我们都使用相同的)。
  5. 在 Windows XP、7 32 和 64 位 Office 2007 或 2010 上运行。

但是,仅在我的机器上,代码在“大”查询后崩溃。所谓大,我的意思是涉及许多联接。较小的单表选择查询运行良好。

更令人困惑的是,崩溃发生db.Close()在线上!结果集被返回并且没有错误信息出现。Visual Studio 甚至不能 JIT 调试它......

我目前的理论是我的特定访问驱动程序有问题?如果是这样,我该如何交换它们?我的团队中有其他人在 Windows 7 64 位上使用 Office 2010,所以我必须假设我可以与他交换驱动程序 DLL(假设这甚至是问题)?

我不愿意进行代码更改,因为这适用于除我之外的每台机器。


Dim db As New ADODB.Connection
Me.connection = "Provider=Microsoft.Ace.OLEDB.12.0;" & _
        "User ID=Admin;" & _
        "Data Source=" & ACCESS07_CONNECTION_STRING & ";" & _
        "Mode=Read|Write;Extended Properties="""";Jet OLEDB:System Database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"
Try
    db.Open(Me.connection)
Catch ex As Exception

    receivedCOMException()
    Return Nothing
    Exit Function

End Try



Dim rs As New ADODB.Recordset
rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient
rs.Open(p_sql_query, db)
'Debug.Print(Me.sql_query)
mpet_rs = New DBRecordSet(rs)
rs.Close()
db.Close()
rs = Nothing
db = Nothing
4

1 回答 1

1

我找到了答案——尽管很伤心,但我重新安装了 Access 2010,现在问题消失了。我的司机出了点问题。

于 2013-10-09T16:52:22.713 回答