Работа в Access 2007 на VBA:
В основном то, что у меня есть в настоящее время, работает без ошибок, но я, вероятно, нарушаю что-то в коде (возможно, 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
oConnection
? Вы открываете его, а затем закрываете - он никогда не используется. Избавиться от этого. Или посмотрите, может лиTransferDatabase
принимать объектADODB.Connection
вместо строки подключения (сомнительно). - person Mathieu Guindon   schedule 07.09.2017