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

 Delphi Discussion :

utilisation de UPDATE dans un code


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 108
    Points : 46
    Points
    46
    Par défaut utilisation de UPDATE dans un code
    Bonjour à tous
    je travaille sous delphi 5 mais pas calé .
    comment faire pour utiliser la presente requête dans mon code delphi SVP? je sais pas comment faire
    voici requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE MOYEN_ELEV_TRIM
           SET MOYENNE_ANNUELLE=(select SUM(MOYENNE_TRIM) / 3  from MOYEN_ELEV_TRIM  where matricule_elev=:matri and  code_annee=:ane and   num_classe=:class
    )
    where  matricule_elev=:matri
    and      code_trim=:trim and  code_annee=:ane
    and      num_classe=:class
    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 092
    Points : 41 067
    Points
    41 067
    Billets dans le blog
    62
    Par défaut
    le plus simple :
    poser un TQuery sur la form
    mettre le texte de la requête dans la propriété
    et définir le paramètres

    ensuite pour le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Query.parambyname('matri').asString:=matri.text;
    Query.parambyname('tri').asInteger:=tri.value;
    Query.parambyname('ane').asInteger :=Ane.value; 
    Query.parambyname('Class').asString:=Class.text;
    Query.ExecSQL;
    PS. ne sachant pas comment les valeurs des paramètres sont récupérés , ni leur type , ceci n'est qu'un exemple

    Dans le cas ou ces valeurs viendrait d'un datasource la rédaction serait encore plus simple :

    2 Query , la premiere devenant le datasource de la seconde
    QUERY1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MATRICULE_ELEV AS MATRI,CODE_ANNEE AS ANE,CODE_TRIM AS TRI,NUM_CLASS AS CLASS FROM MOYEN_ELEV_TRIM
    Avec un TDatasource lié a celle-ci : Datasource1
    Query2 la même que celle que tu as postée ( c'est pour cela que j'ai mis des alias de champs)
    ne pas oublié d'indiquer la propriété Query2 datasource
    pour tout mettre a jour le code sera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Query1.Active:=true;
    while not query1.EOF do
     begin
       Query2.execSQL ; // l'update 
       Query1.Next;
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 108
    Points : 46
    Points
    46
    Par défaut utilisation de UPDATE dans un code
    Bonjour

    les valeurs récupérées viennent des datasources (classe, trimestre, annee à partir d'1 form "F_moyenne_gle"). l'utilisateur choisit la classe, le trimestre et l'année et cela à partir des DBLookupComboBox de la form en question.
    exemple :
    classe type string '01'
    trimestre type integer 3
    annee type integer 4

    j'ai utilisé le 2eme cas que vous me conseillez mais ça marche toujours pas . j'ai l'erreur suivante :"objet parameter definit de manière incorect des info incohérente ou incomplète ont été fournies".
    à l'excution j'ai l'erreur au niveau decette ligne dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F_moyenne_gle.ADOQuery34.execSQL ; // l'update.
    ADOQuery1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MATRICULE_ELEV AS MATRI,CODE_ANNEE AS ANE,CODE_TRIM AS TRI,NUM_CLASSE AS CLASS FROM MOYEN_ELEV_TRIM
    ADOQuery34 (le 2eme query):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE MOYEN_ELEV_TRIM
    SET MOYENNE_ANNUELLE=(select SUM(MOYENNE_TRIM)/3  from MOYEN_ELEV_TRIM WHERE matricule_elev=:matr  AND  code_annee=:anee AND   num_classe=:classe
    )
     
    where  matricule_elev=:matri
    and      code_trim=:trim
    and      code_annee=:ane
    and      num_classe=:class
    merci d'avance pour l'éclairage

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 092
    Points : 41 067
    Points
    41 067
    Billets dans le blog
    62
    Par défaut
    je pense que cela vient de l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      AND  code_annee=:anee AND
    ici le paramètre est mauvais cela devrait être :ane

    Attention
    l'utilisateur choisit la classe, le trimestre et l'année et cela à partir des DBLookupComboBox de la form en question.
    Dans mon premier Post , je supposais (bien que un de mes premiers principes pour anglophones avertis soit : "DON'T ASS/U/ME" ) que tout les enregistrements devaient être modifiés

    cela implique que la première query doit elle aussi être paramétrée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MATRICULE_ELEV AS MATRI,CODE_ANNEE AS ANE,CODE_TRIM AS TRI,NUM_CLASSE AS CLASS FROM MOYEN_ELEV_TRIM 
    WHERE CODE_ANNEE=:A AND NUM_CLASS=:C AND TRIMESTRE=:T
    ce qui implique , avant l'open de Adoquery1 de renseigner les valeurs des paramètres (je ne connais pas très bien la syntaxe avec ADO)

    mais le bloc programme doit se rapprocher de ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.BoutonClick(Sender: TObject);
    begin
    Adoquery1.ParamByName('A').asInteger:=DBLookupComboBoxAnnee.KeyValue;
    Adoquery1.ParamByName('T').asInteger:=DBLookupComboBoxTrim.KeyValue;
    Adoquery1.ParamByName('C').asInteger:=DBLookupComboBoxClasse.KeyValue
    AdoQuery1.Active:=true;
    While not Adoquery1.EOF do
      begin
        ADoquery34.ExecSQL; 
        Adoquery1.Next;
      end;
    Adoquery1.Active:=False;  
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 108
    Points : 46
    Points
    46
    Par défaut utilisation de UPDATE dans un code
    Bonjour
    j'ai toujours la même erreur au niveau de l'update (ADOQuery34.ExecSQL).
    j'ai résolu le problème en créant 1 table et en procédant à une insertion dans ladite table (moyenne_annuelle). ça me fait trop de table mais ça résoud le problème

    merci vive le forum

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 092
    Points : 41 067
    Points
    41 067
    Billets dans le blog
    62
    Par défaut
    Dommage
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Utiliser des focntions dans un code C++
    Par nadir CoCo dans le forum Visual C++
    Réponses: 2
    Dernier message: 26/11/2012, 11h49
  2. Utiliser des .m dans des codes en C
    Par alex91700 dans le forum Octave
    Réponses: 1
    Dernier message: 27/08/2010, 09h30
  3. Utilisation de margin dans le code
    Par Finality dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 12/10/2008, 19h19
  4. [PHP-JS] utilisation de javascript dans un code php
    Par souadmaa dans le forum Langage
    Réponses: 1
    Dernier message: 20/01/2008, 14h00
  5. [FLASH MX2004] Utiliser une variable dans le code
    Par arnolem dans le forum Flash
    Réponses: 25
    Dernier message: 02/12/2005, 16h37

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