ADO-Frage

20/06/2016 - 11:20 von Wolfgang Wolf | Report spam
Hallo,

ich verwende bisher DAO in meiner Ingres-Anwendung. Die stàndig
steigende Anzahl der User lassen auch die DB-Verbindungen ansteigen.
Deshalb denke ich seit einiger Zeit darüber nach ADO und dessen
Verbindungs-Pool einzusetzen. Bisher bin ich daran gescheitert, dass ich
mit ADO in Verbindung mit Ingres-ODBC-Treiber keine Transaktionen
absetzen konnte (Anmerkung zu ODBC: Ingres bietet keinen OLEDB-Treiber).

Nun ist mir aber aufgefallen, dass es doch geht. Ich muss nur dafür
sorgen, dass ich das Transaktions-Zeug sozusagen initialisiere. Also am
Anfang der Anwendung einmal ein cnn.BeginTrans und ein CommitTrans oder
RollbackTrans absetzen ohne Daten zu veràndern. Ab diesen Zeitpunkt kann
ich Transaktionen verwenden. Sollte ich jedoch vor der ersten
Transaktion Daten abrufen (ein Recordset erzeugen) ist es vorbei mit
Transaktionen.

Alternativ könnte ich auch vor jeder DB-Aktion das Connection-Objekt neu
erzeugen (Set cnn = new ADODB.Connection). Die .close und .open-Methoden
reichen nicht aus.

Kann mir dieses Verhalten nicht erklàren. Habt ihr Ideen?

Schönen Gruß
W. Wolf
 

Lesen sie die antworten

#1 Ulrich Möller
21/06/2016 - 00:21 | Warnen spam
Am 20.06.2016 um 11:20 schrieb Wolfgang Wolf:
Hallo,

ich verwende bisher DAO in meiner Ingres-Anwendung. Die stàndig
steigende Anzahl der User lassen auch die DB-Verbindungen ansteigen.
Deshalb denke ich seit einiger Zeit darüber nach ADO und dessen
Verbindungs-Pool einzusetzen. Bisher bin ich daran gescheitert, dass
ich mit ADO in Verbindung mit Ingres-ODBC-Treiber keine Transaktionen
absetzen konnte (Anmerkung zu ODBC: Ingres bietet keinen OLEDB-Treiber).

Nun ist mir aber aufgefallen, dass es doch geht. Ich muss nur dafür
sorgen, dass ich das Transaktions-Zeug sozusagen initialisiere. Also
am Anfang der Anwendung einmal ein cnn.BeginTrans und ein CommitTrans
oder RollbackTrans absetzen ohne Daten zu veràndern. Ab diesen
Zeitpunkt kann ich Transaktionen verwenden. Sollte ich jedoch vor der
ersten Transaktion Daten abrufen (ein Recordset erzeugen) ist es
vorbei mit Transaktionen.

Alternativ könnte ich auch vor jeder DB-Aktion das Connection-Objekt
neu erzeugen (Set cnn = new ADODB.Connection). Die .close und
.open-Methoden reichen nicht aus.

Kann mir dieses Verhalten nicht erklàren. Habt ihr Ideen?

Schönen Gruß
W. Wolf


Hallo Wolfgang,

hast du schon mal ausprobiert, anstatt 'Select Loops' die Einstellung
'Cursors' zu verwenden? In alten Foren findet sich zumindest ein Hinweis
darauf.

Ulrich

Ähnliche fragen