Microsoft KB Archive/109995

= PRB: Dynaset Loses Contents After Transaction Rollback =

Article ID: 109995

Article Last Modified on 10/30/2003

-

APPLIES TO


 * Microsoft Visual Basic 3.0 Professional Edition
 * Microsoft Visual Basic 3.0 Professional Edition

-



This article was previously published under Q109995



SYMPTOMS
If a Dynaset is used in a transaction, records in the Dynaset appear to be lost when the transaction is rolled back.



CAUSE
This is by design. A Dynaset is populated one record at a time, so the RollBack operation removes all the records added during the transaction. After the RollBack operation, the Dynaset contains the single record that was there before BeginTrans began the transaction.



RESOLUTION
Create the complete Dynaset before starting the transaction. For example, replace the code shown in step 3 of the More Information section with this code: Sub Command1_Click Dim db As database Dim ds As Dynaset Set db = OpenDatabase("Biblio.mdb") Set ds = db.CreateDynaset("authors")

' Create the complete Dynaset before starting the transaction. ds.MoveLast ds.MoveFirst

' Populate the listbox with the contents of the Dynaset. BeginTrans While Not ds.EOF list1.AddItem ds(0) ds.MoveNext Wend Rollback

ds.MoveFirst While Not ds.EOF list2.AddItem ds(0) ds.MoveNext Wend End Sub



STATUS
This behaviour is by design.



Steps to Reproduce Behavior
 Start a new project in Visual Basic. Form1 is created by default. Add two list boxes (List1 and List2) and a command button (Command1) to Form1.  Add the following code to the Command1_Click event: Sub Command1_Click Dim db As database Dim ds As Dynaset Set db = OpenDatabase("Biblio.mdb") Set ds = db.CreateDynaset("authors")

'This code populates the listbox with the contents of the Dynaset. BeginTrans While Not ds.EOF list1.AddItem ds(0) ds.MoveNext Wend Rollback

'This code reports only one record in the dynaset. ds.MoveFirst While Not ds.EOF list2.AddItem ds(0) ds.MoveNext Wend End Sub  Run the application or press the F5 key. Click the Command1 button. The first list box is populated correctly but the second contains only a single record.

Additional query words: 3.00

Keywords: kbprb KB109995

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.