Recipe4hate
Legacy Member
Hoi,
Ik werk in MsExcel 2000 en ik heb een connectie gemaakt met een MsAccess database. Alles verloopt prima en alle waarden worden via SQL naar mijn recordsets gedropt en van daaruit laad ik alles in arrays in Excel. Het probleem is, dat ik mijn connectie en mijn recordset sluit en toch mijn database in gebruik blijft. (Na het runnen van de code kan ik bijvoorbeeld de database niet hernoemen of knippen, want dan zegt hij: "in use by another program". Als ik Excel afsluit kan het plots wel.)
mijn relevante code:
Zoals je ziet close ik eerst mijn recordset en uiteindelijk mijn volledige connectie. Ik zie dus niet waarom ik nog steeds niet mijn database mag editen.
Graag jullie hulp! :applause:
Ik werk in MsExcel 2000 en ik heb een connectie gemaakt met een MsAccess database. Alles verloopt prima en alle waarden worden via SQL naar mijn recordsets gedropt en van daaruit laad ik alles in arrays in Excel. Het probleem is, dat ik mijn connectie en mijn recordset sluit en toch mijn database in gebruik blijft. (Na het runnen van de code kan ik bijvoorbeeld de database niet hernoemen of knippen, want dan zegt hij: "in use by another program". Als ik Excel afsluit kan het plots wel.)
mijn relevante code:
Code:
Dim cnnADO As ADODB.Connection
Dim rsABMG As ADODB.Recordset
Dim rsADLO As ADODB.Recordset
Dim rsADFM As ADODB.Recordset
Dim rsAMLP As ADODB.Recordset
Const sDBPATH As String = "K:\Transportation\Manuals\Dbs\Testing purps.mdb"
Const sPROVIDER = "Microsoft.Jet.OLEDB.4.0;"
Private Sub retrieveConnection()
Application.StatusBar = "Retrieving external database connection: " & ""
setupConnections
makeConnection
retrieveDealer_Loc
retrieveBike_ManGrp
retrieveDealer_Lang
retrieveGroupLang_Part
closeConnection
End Sub
Private Sub setupConnections()
Application.StatusBar = "Retrieving external database connection: " & "setup connection"
sConnString = "Provider=" & sPROVIDER & "Data Source = " & sDBPATH & ";"
sSQLADFM = sSQLADFM & "SELECT DCode, DCountry "
sSQLADFM = sSQLADFM & "FROM [dealers for manuals] "
sSQLADFM = sSQLADFM & "ORDER BY DCode ASC"
sSQLABMG = sSQLABMG & "SELECT [Bike Ref], [Manual Group Year 2008], [Manual Group Year 2009] "
sSQLABMG = sSQLABMG & "FROM [Bike and manual group] "
sSQLABMG = sSQLABMG & "ORDER BY [Bike Ref] ASC"
sSQLADLO = sSQLADLO & "SELECT [Bike Dealer], [Language] "
sSQLADLO = sSQLADLO & "FROM [Dealer, Language, Order Codes] "
sSQLADLO = sSQLADLO & "ORDER BY [Bike Dealer] ASC"
sSQLAMLP = sSQLAMLP & "SELECT [Manual Group], [Language:], [Part Number:] "
sSQLAMLP = sSQLAMLP & "FROM [man group_lang code_part no] "
sSQLAMLP = sSQLAMLP & "ORDER BY [Manual Group] ASC"
End Sub
Private Sub makeConnection()
Application.StatusBar = "Retrieving external database connection: " & "opening connection"
cnnADO.CursorLocation = adUseClient
cnnADO.Open (sConnString)
End Sub
Private Sub closeConnection()
Application.StatusBar = "Retrieving external database connection: " & "closing connection"
cnnADO.Close
Set cnnADO = Nothing
End Sub
Private Sub retrieveDealer_Loc()
Application.StatusBar = "Retrieving external database connection: " & "retrieving values"
Dim iListLength As Integer
Dim ic As Integer
rsADFM.Open sSQLADFM, cnnADO
iListLength = countFields(rsADFM)
ic = 0
ReDim arrACCDealer_Location(iListLength, 2)
rsADFM.MoveFirst
Do While (Not rsADFM.EOF)
arrACCDealer_Location(ic, 0) = rsADFM.Fields("DCode")
arrACCDealer_Location(ic, 1) = rsADFM.Fields("DCountry")
ic = ic + 1
rsADFM.MoveNext
Loop
rsADFM.Close
Set rsADFM.ActiveConnection = Nothing
Set rsADFM = Nothing
End Sub
'de rest van de retrieves zijn analoog met retrievedealer_loc() dus ga ik dat hier niet plakken.
Zoals je ziet close ik eerst mijn recordset en uiteindelijk mijn volledige connectie. Ik zie dus niet waarom ik nog steeds niet mijn database mag editen.
Graag jullie hulp! :applause:
