-
Delphi et access
:D
bonjour tout le monde
J'utilise delphi std4 (et oui, un vieux delphi), pour accéder à un base ACCESS, par l'intermédiaire des composants KADAO. J'utilise les tables KADAO pour insérer,modifier et supprimer des valeurs dans la base.
J'avais un problème de conflit (en mode édition) lorsque deux utilisateurs essayaient de modifier le même enregistrement. J'ai résolu le problème directement dans ACCESS (vérrouillage par défaut = enregistrement modifié) et j'ai mis la propriété LocksType de ma table à dbPessimistic.
Cependant, lorsque je supprime un enregistrement (depuis mon appli : TableXXX.delete), les autres utilisateurs, lorsqu'ils parcourent la base, ils ont un message : enregistrement supprimé à chaque changement d'enregistrement. De plus, lorsque je veux supprimer un enregistrement qui est en train d'être modifié par un utilisateur, je n'ai aucun problème.
Je n'ai pas encore tester l'insertion simultanée d'enreg, mais je pense que je vais avoir des pb (clé primaire en NumAuto dans la table )
Y a t'il une personne qui puisse m'aider pour :
- eviter une suppression alors qu'elle est en edition
- mettre à jour la bd lors d'une suppression
merci d'avance
:D
-
Si KADAO ne gère pas les transactions, je pense que tu vas avoir de sérieux soucis dès qu'il va y avoir plusieurs actions en même temps sur la base de données.
Dans D4 Std il n'y a pas le BDE ou ADO ? (J'ai jamais eu la version 4 en main j'ai commencé à la 5 ^^)
-
RE
:D
Dans Delphi 4 STD, il y a le BDE. Par contre je ne peux pas ouvrir de base ACCESS.
Il n'ya pas non plus ADO.
Par contre, KADAO gère les transactions, par l'intermédiaire du composant KadaoDatabase.
J'emploie mes tables kadao en tant que recordset, et non en temps que requête SQL. Est ce que mes problèmes pourraient ils venir de ça ?
Je vais faire des essais (tester avant suppression l'état de la table), je reviens plus tard
a+
:D
-
Une règle essentiel avec les bases de données : Toujours utiliser des TxxxDatabase pour faire la connexion à une base de données
- Ca évite d'avoir à modifier toutes les configurations de tous les composants base de données.
- Ca évite d'avoir x connexions simultannées sur la base de données (ou x = le nombre TxxxTable/TxxxQuery qu'il y a sur la feuille).
- Ca permet de faire les transactions (BeginTrans, commit et rollback) fortement conseillé quand on fait un programme qui va être utilisé par plusieurs utilisateurs en même temps.
Pour le BDE, il faut peut être faire une mise à jour si tu utilises la version de base avec des bases ACCESS de nos jours. Au pire passe par l'ODBC.
-
:D
J'ai utilisé une transaction pour modifier un enreg.
Par contre, si un autre utilisateur edit le même enregistrement, il ne verra pas les données qui ont été modifiées.
Une solution consisterait à avertir qu'un utilisateur edite le même enregistrement.
Y a t'il une technique particulière ?
:D