在 VBA 中使用 Access 2007:
基本上我目前的工作没有错误,但我可能违反了代码中的某些内容(可能是 adodb 和 DAO?),无论我无法在代码完成时结束连接。如果我删除“导入”的代码,那么连接会启动,执行任何代码,然后关闭这是我想要做的,但需要导入。
我这样做的原因是 QODBC 访问进入 Quickbooks 的用户帐户,然后提取信息。问题是“用户”基本上保持登录状态,这不好,因为我们需要访问单用户模式以及您拥有什么。这是我到目前为止的代码。请帮忙!
Private Sub Connect_Click()
On Error GoTo ErrorHandler
'*****************************************************
'Connects the DB to QODBC, imports, and queries the info
'*****************************************************
Dim msg As String
Dim oConnection
Dim sConnectString
Dim dbs As DAO.Database
Dim lngRowsAffected As Long
'Sets connection string
sConnectString = "DSN=Quickbooks Data;OLE DB Services=-2;"
Set oConnection = CreateObject("ADODB.Connection")
oConnection.Open sConnectString
Set dbs = CurrentDb
' Import from QODBC
DoCmd.TransferDatabase acImport, "ODBC Database", "ODBC;DSN=QuickBooks Data;DFQ=C:\Users\Public\Documents\Intuit\QuickBooks\Sample Company Files\QuickBooks 2012\sample_manufacturing business.QBW;SERVER=QODBC;OptimizerDBFolder=%AppData%\QODBC Driver for QuickBooks\Optimizer;OptimizerCurrency=Y;OptimizerAllowDirtyReads=D;OptimizerSyncAfterUpdate=Y;SyncFromOtherTables=N;ForceSDKVersion=<default SDK>;LicenseYear=2018", acTable, "SalesOrder", "SalesOrder1"
'Executes a query that appends a table called 'SalesOrder' from a table called 'SalesOrder1'
dbs.Execute "qryAppendSalesOrder", dbFailOnError
'Bypasses warning messages through an execution of query but this grabs the total appended
lngRowsAffected = dbs.RecordsAffected
'Function that logs how many lines were appended. Basically just an activity table
Globals.Logging "Sales Orders Appended: " & lngRowsAffected
'Updates the 'SalesOrder' from 'SalesOrder1'
dbs.Execute "qryUpdateSalesOrder", dbFailOnError
'Deletes the 'SalesOrder1' table that was imported
DoCmd.DeleteObject acTable, "SalesOrder1"
lngRowsAffected = dbs.RecordsAffected
'Closes Connection
oConnection.Close
Set oConnection = Nothing
ErrorHandler:
If Err.Number <> 0 Then
msg = "Error # " & Str(Err.Number) & " was generated by " _
& Err.Source & Chr(13) & "Error Lne: " & Erl & Chr(13) & Err.Description
MsgBox msg, , "Error", Err.HelpFile, Err.HelpContext
End If
End Sub