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

Contribuez Pascal Discussion :

MAJ d'une SQLQuery ayant un champ persistant


Sujet :

Contribuez Pascal

  1. #1
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut MAJ d'une SQLQuery ayant un champ persistant
    Bonjour à tous

    Soit une table 'VENTES'(NUM_VNT,NUM_PRDV,DAT_VNT,PUV_VNT,QTE_VNT,CD_CLTV) de type SqlQuery et ayant une clé double(NUM_VNT,NUM_PRDV).
    L'insertion, la modification et la suppression d'un enregistrement se fait normalement avec la méthode (Applyupdates).
    Cependant, et une fois avoir ajouté un champ persistant (NOM_CLT:comme champ Lookup) de la table 'CLIENTS'(COD_CLT,NOM_CLT) à la table 'VENTES',
    la modification et la suppression ne seront plus possibles (message d'erreur:unknown NOM_CLT).
    A cause de cela il m'a fallut implémenter la table 'VENTES' par:

    1)La suppression:

    DeleteSQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     delete from ventes
                      where (NUM_VNT=:OLD_NUM_VNT) AND (NUM_PRDV=:OLD_NUM_PRDV); // la clé double permet de repérer l'emplacement de l'enregistrement 
                                                                            // sélectionner.
    2)La mise à jour:

    UpdateSQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     update  ventes
                       set num_vnt=:num_vnt, num_prdv=:num_prdv,dat_vnt=:dat_vnt, puv_vnt=:puv_vnt,qte_vnt=:qte_vnt,cd_cltv=:cd_cltv
                       where (num_vnt=:OLD_num_vnt  and num_prdv=:OLD_num_prdv);
    merci à tous.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    dans les params du sqlQuery as tu rempli les champs type des champs persistant?
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut
    Bonjour!

    Non je n'est pas utilisé les params de sqlQuery.

    merci

  4. #4
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut Amélioration des codes
    Bonjour à tous

    On fait les deux codes précédents présentent des imperfections: si l'un des champs clés suivants(num_vnt, num_prdv) est mis à Null on ne pourra plus modifier l'enregistrement, pour cette raison je les ai modifiés ainsi:

    1)Suppression:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    delete from ventes
                      where (NUM_VNT=:OLD_NUM_VNT  OR NUM_VNT IS NULL) AND (NUM_PRDV=:OLD_NUM_PRDV OR NUM_PRDV IS NULL); // la clé double permet de repérer l'emplacement de l'enregistrement 
                                                                            // sélectionner.
    2)La mise à jour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     update  ventes
                       set num_vnt=:num_vnt, num_prdv=:num_prdv,dat_vnt=:dat_vnt, puv_vnt=:puv_vnt,qte_vnt=:qte_vnt,cd_cltv=:cd_cltv
                       where (num_vnt=:OLD_num_vnt OR NUM_VNT IS NULL)  and (num_prdv=:OLD_num_prdv OR NUM_PRDV IS NULL);
    merci à vous tous

  5. #5
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut Correction du code
    Bonjour à tous

    Tout d'abord je dois m'excuser pour cette erreur que j'ai commise,
    car la MAJ d'un enregistrement ce fait ainsi.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update  ventes
                       set num_vnt=:num_vnt, num_prdv=:num_prdv,dat_vnt=:dat_vnt, puv_vnt=:puv_vnt,qte_vnt=:qte_vnt,cd_cltv=:cd_cltv
                       where num_vnt=:OLD_num_vnt   and num_prdv=:OLD_num_prdv;

    merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/07/2013, 21h39
  2. Insertion dans une table ayant un champ : table de réference
    Par futur_ingenieur dans le forum Oracle
    Réponses: 4
    Dernier message: 16/01/2013, 16h34
  3. MAJ dans une table conditionnée par la valeur d'un de ses champs
    Par NicolasTT dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 24/03/2011, 15h31
  4. Réponses: 4
    Dernier message: 19/04/2006, 16h26
  5. MAJ d'une table sous SQL Server par insertion
    Par keish dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2003, 16h23

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