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 :

Problème de refresh avec clé auto


Sujet :

Connexion aux bases de données Firebird

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut Problème de refresh avec clé auto
    Bonjour, j'espère être sur le bon forum....

    J'ai un soucis:

    Je suis en train de développer une appli sous Delphi et BDD Firebird.

    Pour faire simple, j'ai une form qui affiche dans un DBgrid la liste des clients avec un bouton ajout.
    Une autre form qui affiche les données du client. Classique....

    J'avais créé mes tables avec des index VARCHAR et créer les relations. Sur la form fiche client, sur l'évènement Activate, j'ai mis le code:

    pour être certain d'afficher les dernières mises à jour.

    J'ai testé, celà fonctionnait bien sur le réseau.

    L'idée m'est venue (mauvaise idée sans doute) de changer mes clés par des champ AUTO et de refaire les mêmes relations.

    Le problème est que maintenant lorsque j'appelle cette fiche en mode ajout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DM.ibdClients.Append;
    fmClients.ShowModal;
    Il n'q a pas d'ajout d'enregistrement, c'est systématiquement le dernier qui s'affiche. En cherchant( en tatonnant dirais-je!!) j'ai enlevé le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DM.ibdClients.Refresh;
    de l'évènement Activate et celà fonctionne!!! Mais sur les postes clients je n'affiche plus les dernières mises à jour!!

    J'avoue que je ne comprends pas pourquoi!

    J'ai mis des clé AUTO car je n'arrive pas à générer une clè alphanumérique à partir du nom par exemple, mais c'est un autre sujet.

    Voilà si quelqu'un à une idée ou une soultion je suis preneur.

    D'avance merci

    Cordialement

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 53
    Points
    53
    Par défaut
    tu ne dois pas faire de commit au bon moment. Lis le thread sur les commit et commitretaining

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    J'ai vérifié ils sont bien fait au bon endroit, me semble t il!!!!

    Mais par ailleurs pourquoi ça marche avec une clé primaire Alphanumerique et pas avec une clé auto?

    Mystère!

    Cordialement

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Points : 53
    Points
    53
    Par défaut
    as tu un trigger sur ton insert ?

    du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SET TERM ^ ;
    CREATE TRIGGER AI_CLIENT_REF FOR CLIENT ACTIVE
    BEFORE INSERT POSITION 0
    AS BEGIN   IF (NEW.REF IS NULL) THEN NEW.REF = GEN_ID(CLIENT_GEN, 1);
    END^
    SET TERM ; ^

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    oua le trigger est#bien créé sous IBEasy et à priori le numéro auto se met bien à jour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Type
    BEFORE INSERT 
     
    As
     begin 
       if (new."CLICOD"  IS NULL) THEN 
       begin
            new."CLICOD"=  GEN_ID("G$_CLICOD, 1);
       end
    end
    il y a quelque chose qui m'échappe, mais je vois pas quoi
    Grrrrrr!!!!
    Cordialement

Discussions similaires

  1. Problème Refresh avec ADOTable et ADODataSet
    Par salimdz dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/08/2008, 03h07
  2. Réponses: 6
    Dernier message: 18/12/2007, 10h42
  3. Réponses: 1
    Dernier message: 24/08/2007, 09h29
  4. Problème avec height: auto;
    Par webrider dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 25/07/2007, 17h16
  5. Problème avec Overflow:auto sur Firefox.
    Par psychoBob dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 23/05/2006, 16h46

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