vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Transaktionen (ADO) 
Autor: stc
Datum: 09.08.04 10:56

Wie kann ich voneinander unabhängige Transaktionen in verschiedenen, aber gleichzeitig geöffneten Formularen anwenden.

Situation:
In jedem von zwei Formularen ist ein DataGrid-Steuerelement (ADO). Beide arbeiten - wenn sie einzeln benutzt werden - wie erwartet. Die

Transaktionen werden auch wie erwartet ausgeführt.
Fehler:
Wenn jetzt in ersten Formular ein Feld im DataGrid1 editiert wird (der Focus bleibt in diesem Feld), dann im zweiten Formular versucht wird auch ein

Feld zu editieren, dieses Feld dann verlassen wird (DataGrid2_RowColChange wird ausgelöst), funktioniert der UPDATE in diesem DataGrid2. Jetzt

gehe ich zum ersten Formular zurück verlasse das zuvor editierte Feld (DataGrid1_RowColChange wird ausgelöst) wird die Änderung nicht

übernommen und es kommt folgende Fehlermeldung :

"Microsoft Datentabelle-Steuerelement (DataGrid)
Aktualisierung nicht möglich; momentan gesperrt."

und nachfolgende Transaktionen werden (natürlich) nicht ausgeführt.
Ohne Transaktionen arbeiten beide DataGrid's problemlos unabhängig von einander.

Heißt für mich: obwohl die Transaktionen in jedem Formular auf einer unterschiedlichen Connection basieren, beeinflussen sie das Verhalten im

jeweils anderen DataGrid - für mich unverständlich -.

Wie kann ich beide DATAGRID's dazu bringen, Änderungen - unter Beachtung der Tranaktions-Methoden - unabhängig von einander zu akzeptieren?
(Anmerkung: Der "Provider=Microsoft.Jet.OLEDB.4.0" akzeptiert den "IsolationLevel" 'cn1.IsolationLevel = adXactIsolated' nicht.)


'############## rudimentärer Source Code ####################
Sub Form1_Load()
Dim rs1 As ADODB.Recordset
Dim cn1 As ADODB.Connection

Set cn1 = New ADODB.Connection

' #### Provider=Microsoft.Jet.OLEDB.4.0
cn1.Open "FILE NAME=" & App.Path & "\ini.udl"
Set rs1 = New ADODB.Recordset
With rs1
.ActiveConnection = cn1
.Properties("Preserve on Commit").Value = True
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Source = "SELECT account.*, contact.*, inhalt.* FROM account INNER JOIN (contact INNER JOIN inhalt ON inhalt.id = contact.id) ON

contact.id = account.id where inhalt.pos=3 or inhalt.pos=2"
.Open
End With

cn1.BeginTrans
Set Me.DataGrid1.DataSource = rs1

End Sub
###################################################################

Sub Form2_Load()
Dim rs2 As ADODB.Recordset
Dim cn2 As ADODB.Connection

Set cn2 = New ADODB.Connection

' #### Provider=Microsoft.Jet.OLEDB.4.
cn2.Open "FILE NAME=" & App.Path & "\ini.udl"
Set rs2 = New ADODB.Recordset
With rs2
.ActiveConnection = cn2
.Properties("Preserve on Commit").Value = True
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Source = "SELECT account.*, contact.* FROM account INNER JOIN contact ON contact.id = account.id where contact.email= 'test 4' or

contact.email= 'test 3'"
.Open
End With

cn2.BeginTrans
Set Me.DataGrid2.DataSource = rs2


End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Transaktionen (ADO)2.685stc09.08.04 10:56

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel