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 à l'essai
    Inscrit en
    Novembre 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 31
    Points : 23
    Points
    23
    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 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    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.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 31
    Points : 23
    Points
    23
    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