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

Bases de données Delphi Discussion :

FireBird-TIBClientDataSet-Pb mise a jour en double


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut FireBird-TIBClientDataSet-Pb mise a jour en double
    Bonjour, je développe avec C++Builder6
    que les modérateur m'excuse ,je me permets de poser ma question ici car je n'ai pas trouvé de réponse a mon post sur le forum C++ Builder

    Je suis vraiment bloque , j'en appelle a votre aide

    Je voudrais développer un apllication avec FirereBird qui stocke en cache le données via un TIBClientDataSet (j'ai une IHM et un module de données)
    je me connecte en local

    Pour l'instant je fais des ajout sur un seule table
    par la suite je compte le faire en cascade sur plusieurs table via des procédure stockée ?

    Pour ajouter /modifier/supprimer des infos dans le cache je fais appel aux méthode AppendRecord,SetField et Delete

    lorsque je mets les enregistrement et que j'appelle la méthode ApplyUpdate
    un événement OnUpdate est déclenché (sur lequel j'appelle ma procédure stockée ) les enregistrement se mette en double

    Comment faire ceci sans utilisé du SQl généré mais plutôt des requête SQL
    -Dans une seule table ?
    -Dans plusieurs Table ?
    -Quels évènements utiliser ?
    -Qui peut m'expliquer pourquoi cela me fonctionne pas ?

    J'ai un plus detaillé dans ce post ce que j'ai fait

    Vous pouvez trouver mon projet buggé en téléchargement ici(base +source en bcb6)


    Je vous remercie encore une fois je suis vraiment bloqué
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

  2. #2
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Points : 632
    Points
    632
    Billets dans le blog
    4
    Par défaut clé primaire non renseignée
    bonjour
    après upplyupdate ta clé primaire n'est pas renseignée, mais dans Firebird cette clé est crée, sauf que ton tibclientdataset ne la connais pas.

    pour se faire il faudrait que tu fasses un simple close, open ( requery ) sur ton tibclientdataset juste après upplyUpdate, afin de rafraichir ton Dataset en local.

    Bon courage

    andré

  3. #3
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Le composant TIBDataSetClient fait déjà l'insertion avec ApplyUpdates avant que vous ne le fassiez une 2eme fois avec votre procédure stockée,
    comme ça vous avez inséré deux fois le même enregistrement.
    Si vous êtes libre, choisissez le Logiciel Libre.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Bonjour et merci de vos première réponses

    J'ai quelques questions , j'arrive a lire le journal de modifs

    Comment faire pour mettre a jour 2 ou plusieurs tables en cascade
    (Via mon composant IBStroredProc) dans FireBird si j'alimente mon IBClientDataSet
    (propriéte CommandText) avec une requête du type:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM TABLE1, TABLE2....etc
    WHERE TABLE1.ID=TABLE2.ID....etc


    Quel événement utiliser ?

    Auriez vous un exemple de code en Delphi ou BCB ?

    J'ai entendu dire qu'un TClientDataSet avec un TDataSetProvider était plus "stable" qu'un TIBClientDataSet quel est votre avis ?

    merci encore d'aider un débutant
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/11/2010, 01h32
  2. Mise a jour de mon site en double
    Par kate59 dans le forum Référencement
    Réponses: 2
    Dernier message: 17/02/2010, 13h31
  3. FireBird -IBClientDataSet-Pb de mise a jour dans le SGBD
    Par o_live dans le forum Bases de données
    Réponses: 9
    Dernier message: 19/05/2009, 22h47
  4. [Delphi+Firebird] Erreur de mise à jour
    Par jojo86 dans le forum Bases de données
    Réponses: 18
    Dernier message: 02/03/2008, 11h36
  5. [FireBird 1.5]Mise à jour d'une SGBD ?
    Par Sitting Bull dans le forum Débuter
    Réponses: 3
    Dernier message: 03/09/2004, 16h45

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