我有一个奇怪的错误,似乎只是在一个大查询之后出现(即,有很多连接)而不是在单个表上的小查询上发生。
这是我的设置:
使用以下连接语句连接到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"
(全行代码在底部)
然而,仅在我的机器上,代码在" big"之后崩溃。查询。大,我的意思是涉及许多联合。较小的单表选择查询运行正常。
为了让它更加混乱,崩溃发生在db.Close()
行!返回结果集,不显示任何错误消息。 Visual Studio甚至无法JIT调试它......
我目前的理论是关于我的特定访问驱动程序的事情?如果是这样,我该怎么换掉呢?我的团队中有其他人在Windows 7 64bit上使用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
答案 0 :(得分:1)
我找到了答案 - 尽管事实证明这很难过,但我重新安装了Access 2010,现在问题已经消失。我的司机有些不好。