IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Connexion aux bases de données Firebird Discussion :

suppression - affichage, problème de niveau d'isolation


Sujet :

Connexion aux bases de données Firebird

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Points : 1
    Points
    1
    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...

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    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

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    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é...!

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    quel type de transaction est utilisé, quand les transactions de select sont elles ouvertes ...
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

Discussions similaires

  1. Problème au niveau de l'Affichage des données
    Par devalender dans le forum MkFramework
    Réponses: 25
    Dernier message: 25/10/2014, 18h16
  2. Problème au niveau d'affichage
    Par bayouta19 dans le forum Langage
    Réponses: 0
    Dernier message: 14/05/2013, 15h12
  3. Problème de niveau d'affichage de Form
    Par mdanielm dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/03/2013, 12h46
  4. Problème de niveau d'affichage
    Par eric_vi dans le forum Qt
    Réponses: 6
    Dernier message: 16/08/2010, 00h29
  5. Réponses: 1
    Dernier message: 29/04/2009, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo