Question

J'ai un Microsoft Access 2003 ADP, qui utilise une forme liée « principale » avec plusieurs sous-formulaires liés style continu. Ils utilisent tous déconnectés par une Recordsets classe d'aide.

Plusieurs utilisateurs ont remarqué le même comportement étrange: ils ajoutent / modifier un enregistrement dans le sous-formulaire en continu, ils quittent le dossier (ce qui engage la modification du Recordset), ils bloquent l'ordinateur (Ctrl + Alt + Suppr), ils déverrouillent l'ordinateur, ils retournent à la forme, au bout de 5 secondes, il scintille et revenir à l'état d'origine non édité.

Je suis en mesure de reproduire ce qui suit les étapes ci-dessus, plus loin, après avoir fait un changement de ma forme, lié à un Recordset déconnecté, je suis allé à SQL Server et changé une valeur. Après le verrouillage / déverrouillage de routine de l'ordinateur, la forme scintille et rafraîchit, et la valeur NOUVEAU Je viens entré dans SQL Server apparaît.

Il est comme si après 5 secondes, mon déconnecté Recordset reconnecte (sur son propre) et requerying Recordset.

Je me rends compte que je ne donne pas beaucoup d'informations, mais quelqu'un at-il rencontré un problème avec Recordsets déconnecté et reconnectant requerying? Ou au moins avoir une idée de là où je pourrais commencer le débogage?

Je le script ADP et SQL pour créer la base de données si quelqu'un souhaite recréer cela dans leur environnement.

Voilà comment je crée le Recordset déconnecté:

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
Était-ce utile?

La solution

  

Je voulais transaction comme traitement (boutons Enregistrer et Annuler) sans   les tables étant verrouillées, dans mon système multi-utilisateur. pour en continu   formes dans l'accès au travail, ils doivent être liés à un Recordset.

Vous pouvez utiliser des formulaires / sous-formulaires liés à des tables temporaires pour atteindre juste cet effet.

http://www.access-programmers.co. Royaume-Uni / forums / showthread.php? t = 206862

Steve

Autres conseils

Probablement un peu hors-sujet, mais ce code est intéressant. Je ne l'ai jamais pensé à travailler avec des ensembles de données comme celle-ci. Y at-il une raison particulière pour laquelle vous utilisez ces « ensembles de données déconnectées »?

Moi aussi expérimenté avec le même code un certain temps et avait la même expérience.

Voici la façon dont je vois pourquoi le recordset reconnecte au serveur ...

Si vous cochez la recordsource de votre formulaire (après la liaison du recordset), vous verrez votre instruction SQL placé là comme valeur. Comme il est PAAF votre formulaire est toujours lié au serveur. Par conséquent, lorsque la forme rafraichit, le recordset rafraîchit aussi.

Si vous trouvez une solution à ce s'il vous plaît poster!

Merci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top