Frage

Ich habe eine Microsoft Access 2003 ADP, das eine gebunden „main“ Form mit mehreren gebundenen kontinuierlichen Stil subforms verwendet. Sie alle nutzen nicht verbundenen Datensätzen über eine Hilfsklasse.

Einige Benutzer haben das gleiche seltsame Verhalten bemerkt: sie hinzufügen / bearbeiten ein Datensatz in dem kontinuierlichen Unterformular, sie verlassen den Datensatz (die Bearbeitung auf die Re-Cord zu begehen), sie sperren die Computer (Strg + Alt + Entf), sie entsperren der Computer, gehen sie in die Form zurück, nach ca. 5 Sekunden flackert und auf den ursprünglichen ungeschnittenen Zustand zurück.

Ich habe in der Lage gewesen, dies die obigen Schritte zu reproduzieren, weiter, nach einer Änderung in meiner Form zu machen, gebunden an einen getrennten Re-Cord, ging ich zu SQL Server und einen Wert geändert. Nach der Sperren / Entsperren Computerroutine, die Form flackert und erfrischt, und der neue Wert ich nur in SQL Server eingegeben werden.

Es ist, als ob nach ca. 5 Sekunden, mein getrennter Re-Cord, einen erneute Verbindung (auf seine eigenen) und Neuabfragen den Re-Cord.

Ich weiß, ich bin nicht viele Informationen hier zu geben, aber hat jemand ein Problem mit nicht verbundenen Datensatz wieder anschließen und Neuabfragen gestoßen? Oder zumindest hat eine Idee, wo ich das Debuggen beginnen könnte?

Ich habe das ADP und SQL-Skript zum Erstellen der Datenbank, wenn jemand dies in ihrer Umgebung neu erstellen möchten.

Hier ist, wie ich den getrennten Re-Cord bin erstellen:

Dim cnn                 As ADODB.Connection
Dim stmTest             As ADODB.Stream

Set cnn = New ADODB.Connection
cnn.Open Application.CurrentProject.AccessConnection.ConnectionString

' Create recordset and disconnect it.
Set mrsTest = New ADODB.Recordset
mrsTest.CursorLocation = adUseClient
mrsTest.Open "SELECT * FROM [tblChild] WHERE ParentID = 1" _
    , cnn _
    , adOpenStatic, adLockBatchOptimistic
Set mrsTest.ActiveConnection = Nothing

cnn.Close
Set cnn = Nothing

' Copy recordset to stream in memory.
Set stmTest = New ADODB.Stream
stmTest.Open
mrsTest.Save stmTest, adPersistADTG

' Bind form to disconnected recordset.
Set Me.Recordset = mrsTest

' Open a copy of the recordset from the stream.
Set mrsTest = New ADODB.Recordset
stmTest.Position = 0
mrsTest.Open stmTest
War es hilfreich?

Lösung

  

Ich wollte Transaktion wie Verarbeitung (Speichern und Tasten Cancel) ohne   die Tabellen in meinem mehr Benutzersystem gesperrt, zu werden. für die kontinuierliche   Formulare in Access zu arbeiten, müssen sie zu einem Re-Cord gebunden werden.

Sie können Formulare / subforms gebunden temporäre Tabellen verwenden, nur um diesen Effekt zu erzielen.

http://www.access-programmers.co. uk / Foren / showthread.php? t = 206862

Steve

Andere Tipps

Wahrscheinlich ein wenig offtopic, aber das ist interessant Code. Ich habe nie gedacht, mit Datensätzen wie folgt über die Arbeit. Gibt es einen bestimmten Grund, warum Sie diese ‚getrennt Datensätze‘ verwenden?

Auch ich mit dem gleichen Code experimentiert eine Weile zurück, und hatte die gleiche Erfahrung.

Hier ist die Art, wie ich sehe, warum der Re-Cord zum Server verbindet ...

Wenn Sie Ihre Form der Datenherkunft überprüfen (nach der Re-Cord-Bindung) werden Sie Ihre SQL-Anweisung dort als Wert gelegt. Da es Ihre Form immer an den Server gebunden ist, ADP. Daher, wenn das Formular aktualisiert, aktualisiert der Re-Cord zu.

Wenn Sie eine Lösung für dieses Problem finden bitte posten!

Danke.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top