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 :

TIBDataSet et plusieurs tables


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 103
    Points : 97
    Points
    97
    Par défaut TIBDataSet et plusieurs tables
    Bonjour,
    J'utilise dans mon application des composants TIBDataSet pour afficher des tables. J'ai l'impression que le composant TIBDataSet gère très mal deux tables à la fois.
    e m'explique, dans ma requète sql SELECT, je sélectionne les champs de 2 tables différentes. Dès lors que je souhaite éditer les enregistrements, via une grille, aucune modification n'est répercuté sur la base. Je peux faire tous les POST et Commit que je veux rien n'a y faire. Et pourtant j'applique la même méthode que lorsque j'attaque une seule table.

    Alors je me tourne vers la communauté Delphi, pour savoir si quelqu'un a rencontré ce problème.

    Merci

  2. #2
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    vous ne pouvez pas éditer une jointure, il faut attaquer les tables indépendamment.

    vous utilisez quoi comme SGBD FireBird ou Interbase

  3. #3
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    à ma connaissance, une requête sur plusieurs tables n'est pas updatable directement.
    pour arriver au résultat que tu souhaite, tu dois créer une vue dans la base de donnée, et la rendre updatable en l'y associant des triggers pour l'insertion, la mise à jour et la suppression.
    du coté de delphi, la requête sql de ton composant TIBDataSet devra faire référence plutôt à cette vue qu'aux deux tables.

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 103
    Points : 97
    Points
    97
    Par défaut
    Bonjour tout le monde,

    En fait, dans la requète Update du composant TIBClientDataSet je maj qu'une table parmi les 2. Ca devrait passer, non?

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Montre nous ta requête Select et ta requête Update. Je pense qu'on verra mieux ce qui s'y passe.

    [edit]
    C'est un compo IBDataSet ou IBClientDataSet ?
    [/edit]

    @+ Claudius

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 103
    Points : 97
    Points
    97
    Par défaut
    Désolé c'est bien un composant TIBDataSet.

    Voici la requete SELECT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT CST_ID, 
                 CST_DTSAISIE,
                 CST_NOLIVR,
                 CST_REGLE,
                 CSL_ID,
                 CSL_PRDID,
                 CSL_PRIX,
                 CSL_QTE,
                 CSL_QTEREGLEE,
                 CSL_LIBELLE
    FROM    LIGNES_CDES_STOCK,
                  COMMANDES_STOCK
    WHERE CST_NOCARTE = :CST_NOCARTE AND
                 CST_DTSAISIE >= :DATEDEBUT AND
                 CST_DTSAISIE <= :DATEFIN AND
                 CST_REGLE = :CST_REGLE AND
                 CSL_CSTID = CST_ID
    Et la requete UPDATE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    update LIGNES_CDES_STOCK
    set
      CSL_CAPID = :CSL_CAPID,
      CSL_LIBELLE = :CSL_LIBELLE,
      CSL_PRDID = :CSL_PRDID,
      CSL_PRIX = :CSL_PRIX,
      CSL_QTE = :CSL_QTE,
      CSL_QTEREGLEE = :CSL_QTEREGLEE,
      CSL_REGLE = :CSL_REGLE
    where
      CSL_ID = :OLD_CSL_ID AND
      CSL_CSTID = :OLD_CSL_CSTID

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    salut

    je vois déjà un problème le champ CSL_CAPID que tu mets à jour dans ta requête Update n'apparaît pas dans ta requête Select. Donc la valeur de ton paramètre :CSL_CAPID ne peut être renseigné.

    Il faut absolument que les champs mis à jour apparaîssent dans ton select.

    @+ Claudius

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 103
    Points : 97
    Points
    97
    Par défaut
    Oui en effet! Il manquait même deux champs! Et maintenant ca fonctionne. Les modifications sont bien prise en compte. Mais comment fonctionne le TIBDataSet?
    Ma requète SQL attaquant des champs présents en base,elle devait fonctionner.
    On est donc obliger de sélectionner tous les champs à mettre à jour.

    Merci beaucoup Cl@udius

  9. #9
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par rezuss Voir le message
    On est donc obliger de sélectionner tous les champs à mettre à jour.
    Oui c'est une obligation si tu veux que tes requêtes actions puissent accéder aux valeurs des paramètres :* et :old_*.

    @+ Claudius

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 19h05
  2. Requête complexe sur plusieurs table
    Par DenPro dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2003, 17h50
  3. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  4. Une seule table VS plusieurs tables
    Par LostControl dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/08/2003, 10h56
  5. [SQL] Sélection ds plusieurs table
    Par lord_paco dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/07/2003, 17h53

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