ich hab als externe DB sqlite am Laufen und möchte nun Transaktionen per Makro auslösen. Wenn ich nun aber für das Datenverbindungsobjekt <setAutoCommit("false")> (Code: Zeile 32) setze, wird die Fehlermeldung "This call is not allowed when sharing connections.." ausgegeben. Mir ist allerdings nicht klar, wie ich eine Verbindung zur DB erhalte, die nicht "shared" ist. Wäre nett, wenn mir da mal jemand beistehen könnte. Hier der Code:
Code: Alles auswählen
01 REM ***** BASIC *****
02 Option Explicit
03 Sub KUSTaktualisieren()
04
05 ' Statement zur KUST-Abfrage
06 Const cKUSTquery = "SELECT KDNR+0 AS KDNR, NAME, STRASSE, PLZ, ORT, NR_VKB FROM KUST"
07 Dim oStatement as Object
08 Dim oResultSet as Object
09
10
11 Dim oAnzRecordsResult as Object
12 Dim iRecordCount as Integer
13 iRecordCount = 0
14
15
16 ' KUST-Record-Values in Variablen
17 Dim iKDNR as String, iPLZ as Integer, iNR_VKB as Integer
18 Dim sNAME as String, sSTRASSE as String, sORT as String
19
20
21 ' SQL-String für INSERT/UPDATE
22 Dim sSQL as String
23
24 ' KUST.DBF abfragen
25 oConBEFOdat = ConnecttoDatabase(cBEFOdatDSN,"","") 'Verbindung herstellen
26 oStatement = oConBEFOdat.createStatement()
27 oResultSet = oStatement.executeQuery(cKUSTquery)
28
29 ' Verbindungsobjekt für ADSteuerung erstellen
30 oConADsteuer = ConnecttoDatabase(cDSN,"","")
31
32 oConADsteuer.setAutoCommit("false")
33
34 'XRay oConADsteuer
35
36
37 ' Objektvariable für SQL-Statement-Ausführung
38 oStatement = oConADsteuer.createStatement()
39 if not isNull(oResultSet) then
40 Do while oResultSet.Next()
41 iKDNR = oResultSet.getString(1)
42 sNAME = """" & oResultSet.getString(2) & """"
43 sSTRASSE = """" & oResultSet.getString(3) & """"
44 iPLZ = oResultSet.getInt(4)
45 sORT = """" & oResultSet.getString(5) & """"
46 iNR_VKB = oResultSet.getInt(6)
47
48
49 ' Prüfabfrage, ob ein Kunde bereits in der Tabelle customer vorhanden ist
50 sSQL = "SELECT 1 FROM customer WHERE id_customerorigin = 2 AND kdnr = " & iKDNR
51
52 oAnzRecordsResult = oStatement.executeQuery(sSQL)
53
54 Do while oAnzRecordsResult.next()
55 iRecordCount = oAnzRecordsResult.getInt(1)
56 Loop
57
58 If iRecordCount = 1 then
59 sSQL = "UPDATE customer SET " & _
60 "id_staff_editor = 1, " & _
61 "name = " & sNAME & ", " & _
62 "street = " & sSTRASSE & ", " & _
63 "plz = " & iPLZ & ", " & _
64 "city = " & sORT & ", " & _
65 "nr_vkb = " & iNR_VKB & " " & _
66 "WHERE id_customerorigin = 2 AND kdnr = " & iKDNR & ";"
67 else
68 sSQL = "INSERT INTO customer(id_staff_editor, id_customerorigin, kdnr, name, street, plz, city, nr_vkb) " & _
69 "VALUES(1,2," & iKDNR & "," & sNAME & "," & sSTRASSE & "," & iPLZ & "," & sORT & "," & iNR_VKB & ");"
70 End if
71
72
73 oStatement.executeUpdate(sSQL)
74
75
76 loop
77 End if
78
79
80 oConBEFOdat.close()
81 oConADsteuer.close()
82
83 Info_KUSTupdate()
84 End Sub
Oliver