Bonjour,
J'utilise une base de donnée firebird 1.5.2 et j'ai un petit probleme presque amusant mais assez embêtant lors de la suppression d'enregistrements...
Je peux faire des insertions dans la BD de deux manières.
A partir du programme principal ou d'un module qui permet de gérer le contenu de la BD.
L'affichage des clients et des produits associés se fait donc dans le module, à partir duquel on peut créer, modifier ou supprimer de nouveaux clients. Situation ordinaire pour une BD!!
Depuis le programme principal, il est également possible d'insérer un nouveau client.... Mais ce sont surtout des enregistrements concernant
l'association entre les clients et les produits achetés qui sont insérés dans la BD à ce niveau.
Mon problème est le suivant:
Lorsque je surpprime un client depuis ce module deux cas sont possible:
1. le client a été inséré depuis le module (interface graphique).
2. le client a été inséré depuis le programme principal.
lorsque je supprime un client du cas 1 il n'y a pas de problème, l'enregistrement est supprimé et tout va bien, je peux recommencer et supprimer tous les enregistrements insérés de cette manière sans le moindre problème.
Lorsque je supprime un enregistrement qui a été inséré suivant le cas 2, si cet enregistrement n'est pas le seul à avoir été inséré par la méthode
du point 2, alors tout va bien aussi.
Mais lorsqu'on arrive au dernier enregistrement inséré suivant la méthode du point 2, même s'il reste des enregistrements insérés par la méthode du point 1, ils ne veulent plus s'afficher dans la datagrid lorsque après la suppression du dernier enregistrement de type point 2 je réexécute le select adéquat pour afficher les données dans la datagrid.
Et je précise bien que les enregistrements qui ne veulent plus s'afficher se trouvent TOUJOURS dans la base de donnée. Ils se réafficheront uniquement lorsqu'un nouvel enregistrement de type point 2 aura été effectué. En effet dès qu'un enregistrement aura été effectué depuis le programme principal, tout les enregistrements qui avaient disparu seront de nouveau sélectionné et affiché.
BIZZARE non!?
COMPOSANTS utilisés:
Du coté du programe principal, j'utilise un TIBDataBase et une TIBTransaction et un TIBQuery pour effectuer les insertions lorsqu'il le faut.
Du coté du module, j'utilise également un TIBDataBase et une TIBTransaction, des TIBQuery pour l'ajout, la modification, suppression et un TIBDataSource pour lier les données à un TIBDataGrid et d'autres contrôles.
Je précise encore que les valeurs des propriétés de chaques TIBDataBase et TIBTransaction d'un côté ou de l'autre sont pareilles.
des commits sont mis en oeuvres lors des opérations d'insertion, suppression et modifications...
Je me demande à quel niveau ce situe le problème:
1. Le fait d'utiliser un fichier base de donnée avec deux composants database,
2. mauvaise utilisation des transactions,
3. mauvaise utilisation des TibQuery,
4. mauvaise configuration des propriétés du DataSource
5. ou encore mauvaise configuration des propriétés de la TIBDataGrid.....!!!!?????
Si qqun à tenu le coup jusqu'au bout en lisant mon message et qu'en plus il aurait une solution, ou une autre idée pouvant faire avancer le schmilblick, son aide sera la bienvenue...
Partager