Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Connexion aux bases de données
Connexion aux bases de données Forum d'entraide sur la connectivité Firebird: composants, drivers, transactions, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2006, 10h03   #1
Invité de passage
 
Inscription : novembre 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 2
Points : 0
Points : 0
Par défaut suppression - affichage, problème de niveau d'isolation

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...
astro_bod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2006, 15h27   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
un simple pb de refresh du select et la sale mani pour ces composant d'utiliser une seule transaction persistante pour gérer les select
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 08h40   #3
Invité de passage
 
Inscription : novembre 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 2
Points : 0
Points : 0
Merci pour la réponse mais je ne vois pas exactement ce que je dois faire pour y remédier et je ne suis vraiment pas sûr qu'il s'agisse d'un problème de transaction 'persistente' car le problème peut survenir lors d'une autre session alors que la base de donnée a été 'commité...' et fermée....

Je me demande s'il ne pourrait pas plutot s'agir d'un problème d'instance car FireBird est en mode superserver.
Comme les insertions peuvent se faire depuis le programme principal ou depuis le module, j'ai donc deux composants TDataBase qui sont comme j'ai cru le comprendre connectés chacun à une instance du serveur de base de donné.

la question reste la même.

Pourquoi et oh grand dieu pourquoi ce problème se passe-t-il lorsque je supprime le dernier enregistrement ayant été inséré depuis le programme principal et que lorsqu'il y en a plus d'un, on peut très bien les effacer sans que cela perturbe l'affichage.

Tant qu'il reste au moins un enregistrement inséré depuis le prog. principal, la grid affiche très bien tous les enregistrement, autant ceux insérés depuis le module que le prog. principal, mais lorsque le dernier inséré depuis le prog. principal est supprimé, ces par ex. 1000 autres enregistrements ne sont plus affiché...!
astro_bod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2006, 09h40   #4
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
quel type de transaction est utilisé, quand les transactions de select sont elles ouvertes ...
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h25.


 
 
 
 
Partenaires

Hébergement Web