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 :

mise à jour TADOQuery select...union dans un dbgrid


Sujet :

Bases de données Delphi

  1. #1
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 31
    Par défaut mise à jour TADOQuery select...union dans un dbgrid
    Bonjour,

    Je cherche à savoir s'il est possible de mettre à jour les tables associées à un ADOQuery contenant la requête "select..union.. select" lié à un dbgrid.

    Je m'explique :

    J'ai un TADOQuery avec la commande (exemple) :

    "SELECT id_client, nom_client from clients
    UNION
    SELECT id_client, nom_client from clients_histo"

    Les deux tables sont de même structure (même clé primaire, mêmes champs).

    Un dbgrid est relié à cet ADOQuery

    Si j'essaye de modifier à partir du dbgrid une ligne du "select clients_histo" (alors que ça marche pour la table clients), j'ai une exception avec le message 'La ligne n'a pas pu être trouvée pour la mise à jour. Certaines valeurs ont peut être changé depuis leur dernière lecture'.

    Apparemment la modification n'est acceptée que pour la première table apparaissant dans la requête.

    Merci pour toute réponse.

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Ce que tu veux faire est à éviter.

    Je pense que tu as eu de la chance de pouvoir modifier un enregistrement.

    L'erreur :"La ligne n'a pas pu être trouvée pour la mise à jour" veut dire en clair que tu as un id_client identique dans chacune des deux tables et qu'il ne peut pas savoir laquel il doit mettre à jour.

    Un TxxxQuery peut être mis à jour uniquement s'il pointe sur une table unique avec une clef unique, dès qu'il gère plusieurs tables, il n'est plus possible de faire de modifications directes.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 31
    Par défaut
    Merci de ta réponse,

    Je vais chercher une autre solution (table temporaire de fusion, 1 dbgrid par table...).

    Néammoins la cause de mon erreur ne venait pas de valeurs identiques pour l'id_cilent. J'ai pris soin de ne pas avoir les mêmes valeurs de clés dans les deux tables.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/04/2006, 16h16
  2. mise à jour d'un champ dans un formulaire
    Par DiverSIG dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/03/2006, 08h10
  3. mise à jour d'un champ dans un formulaire
    Par DiverSIG dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/03/2006, 19h42
  4. mise à jour de champ monétaire dans un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 1
    Dernier message: 30/08/2005, 11h49
  5. Réponses: 2
    Dernier message: 12/02/2003, 15h26

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