好吧,这很有趣。我正在使用
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