2011-04-06 5 views
1

J'ai 2 tables de données dans une base de données MS Access. Mon winform fera d'abord UPDATE, puis SELECT. Le UPDATE fonctionne toujours, c'est-à-dire qu'il met à jour correctement la base de données avec les valeurs correctes des zones de texte.étrange problème MS Access: SELECT après UPDATE pas conforme

Le SELECT se connecte aux deux datatables. La plupart du temps, SELECT renvoie les tuples corrects de la jointure. Mais de temps en temps, le tout dernier tuple contiendrait des données partielles comme si le UPDATE n'était pas exécuté sur celui-là.

C'est ce que je fais. Dans la méthode A, connection.open, update query, connection.close.

Dans la méthode B, connection.open, sélectionnez query, connection.close. J'appelle la méthode A, puis la méthode B. Donc, les choses doivent se passer de manière séquentielle.

Si je mets le sommeil (500) entre les 2 méthodes, l'état de la course est parti. Mais je ne comprends pas d'où il vient ....

+0

Migration vers SQL Server n'est pas une option? :-) –

+1

Qu'est-ce que vous utilisez pour exécuter les requêtes? La condition de concurrence est-elle éliminée si vous arrêtez de fermer la connexion entre les requêtes? Essayez connection.open, mettez à jour la requête, sélectionnez la requête, connection.close. – schizodactyl

+3

Que se passe-t-il si vous réutilisez une seule connexion dans les deux méthodes A et B (plutôt que d'ouvrir et de fermer indépendamment une connexion dans chaque méthode)? – HansUp

Répondre

3

Si vous utilisez ADO alors c'est une "caractéristique" bien connue de JET. Voici un exemple de Microsoft avec une solution au fond pour synchroniser la base de données

http://support.microsoft.com/kb/200300

+0

Bonne citation. +1 –