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

Requêtes MySQL Discussion :

inclure variable query via Delphi [MySQL-5.6]


Sujet :

Requêtes MySQL

  1. #1
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut inclure variable query via Delphi
    Salut,
    Je voudrais inclure dans mes requêtes SQL via Delphi des variables comme par exemple ici pour balayer une table sur un champ heure et un filtre heure dans une date:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
           for i:=0  to 23 do
                    begin
                    if i<10 then
                    istr:='0'+intTostr(i)
                    else
                    istr:= intTostr(i);
                    if i<9 then
                    istr1:='0'+intTostr(i+1)
                    else
                    istr1:= intTostr(i+1);
     
                   Query.Active:=False;
                    Query.SQL.Clear;
                      Query.SQL.add('UPDATE out_evo_tat');
                      Query.SQL.add('SET TAT_CHAINE = (SELECT AVG(DELTA_CKIN_RESAN)');
                      Query.SQL.add('FROM tests');
                      Query.SQL.add('WHERE TAT_CHAINE = out_evo_tat.TAT_CHAINE');
                      Query.SQL.add('AND DELTA_CKIN_RESAN BETWEEN 0 AND 3600');
                      Query.SQL.add('AND CKIN_NEMO_DT BETWEEN 2013-07-30 ');
                      Query.SQL.add(Quotedstr(istr));
                      Query.SQL.add(':00:00 AND 2013-07-30 ');
                      Query.SQL.add(Quotedstr(istr1));
                      Query.SQL.add(':00:00)');
                      Query.SQL.add('WHERE Heure = ');
                      Query.SQL.add(Quotedstr(intTostr(i)));
                      Query.ExecSQL(true) ;
                     end;
    PHPMySQL me renvoie:
    Error...right syntax to use near "00'
    :00:00 AND 2013-07-30
    '01'
    :00:00)
    WHERE Heure =
    '0" at line 7
    ???
    C'est sûrement une co... mais là je boucle

  2. #2
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Bonjour.
    il y effectivement une erreur de syntaxe dans la requête : un ' de trop en rouge ci-dessous.
    "00'
    :00:00 AND 2013-07-30
    '01'
    :00:00)
    WHERE Heure =
    '0" at line 7
    En SQL, l'heure s'écrit 00:00:00 et non pas 00' 00:00 ...
    L'erreur vient de la fonction Quotedstr qui ajoute ' avant l'ajout de la variable. Je ne connais pas Delphi mais j'imagine que cette fonction doit avoir des options de formatage

  3. #3
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    J'ai aussi testé:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    for i:=0  to 23 do
                    begin
                    if i<10 then
                    istr:='0'+intTostr(i)
                    else
                    istr:= intTostr(i);
                    if i<9 then
                    istr1:='0'+intTostr(i+1)
                    else
                    istr1:= intTostr(i+1);
     
                   Query.Active:=False;
                    Query.SQL.Clear;
                      Query.SQL.add('UPDATE out_evo_tat');
                      Query.SQL.add('SET TAT_CHAINE = (SELECT AVG(DELTA_CKIN_RESAN)');
                      Query.SQL.add('FROM tests');
                      Query.SQL.add('WHERE TAT_CHAINE = out_evo_tat.TAT_CHAINE');
                      Query.SQL.add('AND DELTA_CKIN_RESAN BETWEEN 1800 AND 3600');
                      Query.SQL.add('AND  CKIN_NEMO_DT >= 2013-07-30 ');
                      Query.SQL.add(Quotedstr(istr));
                      Query.SQL.add(':00:00 AND CKIN_NEMO_DT < 2013-07-30 ');
                      Query.SQL.add(Quotedstr(istr1));
                      Query.SQL.add(':00:00)');
                      Query.SQL.add('WHERE Heure = ');
                      Query.SQL.add(Quotedstr(intTostr(i)));
                      Query.ExecSQL(true) ;
                     end;
    PHPMySQL me renvoie le même message

  4. #4
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    J'utilise pourtant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Query.SQL.add('WHERE Heure = ');
    Query.SQL.add(Quotedstr(intTostr(i)));
    qui fonctionne très bien???

  5. #5
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Disons plutôt que tu ne sais pas encore si ça fonctionne puisque SQL n'est pas encore arrivé jusque là. Tu verras alors qu'il y aura une erreur puisqu'il manque un apostrophe après la valeur de l'heure ...
    La Syntaxe MySQL exige que les valeurs des variables soient entourées de ' :
    Code MySQL : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE Heure = '01:24:36'

    Je pense que tu devras écrire quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Query.SQL.ADD(Quotedstr(intTostr(i)));
    Query.SQL.ADD('' ');
    pour terminer correctement ta requête

    Mais pour essayer de résoudre ton premier problème, n'existe il pas une fonction Str () que tu pourrais utiliser au lieu de Quotedstr () et qui te renverrai la valeur de la variable sans le ' devant ?

  6. #6
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    En fait c'est simple str existe bien : http://delphi.about.com/library/rtl/blrtlStr.htm

    tu remplaces quotedstr par str pour les 2 fois ou tu fourni un bout de la valeur de l'heure et ty ne change rien pour le troisième quotedstr

  7. #7
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    de fait, maintenant plus de bug mais la condition du range de date (>= <) ne renvoie rien???
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     i:=0;
                 repeat
                    begin
                    if i<10 then
                    istr:='0'+intTostr(i)
                    else
                    istr:= intTostr(i);
                    if i<9 then
                    istr1:='0'+intTostr(i+1)
                    else
                    istr1:= intTostr(i+1);
     
                   Query.Active:=False;
                    Query.SQL.Clear;
                      Query.SQL.add('UPDATE out_evo_tat');
                      Query.SQL.add('SET TAT_CHAINE = (SELECT AVG(DELTA_CKIN_RESAN)');
                      Query.SQL.add('FROM tests');
                      Query.SQL.add('WHERE TAT_CHAINE = out_evo_tat.TAT_CHAINE ');
                      Query.SQL.add('AND DELTA_CKIN_RESAN BETWEEN 0 AND 3600 ');
                      Query.SQL.add('AND tests.CKIN_NEMO_DT >= ''2013-07-30 '+istr+':00:00''');
                      Query.SQL.add('AND tests.CKIN_NEMO_DT < ''2013-07-30 '+istr1+':00:00''');
                      Query.SQL.add('AND out_evo_tat.Heure = ');
                      Query.SQL.ADD(Quotedstr(intTostr(i)));
                      Query.SQL.add(')');
                      Query.ExecSQL(true) ;
                    end;
                    i:=i+1;
                    until  i>23;

  8. #8
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    ...et le code
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     i:=0;
                 repeat
                    begin
                    if i<10 then
                    istr:='0'+intTostr(i)
                    else
                    istr:= intTostr(i);
                    if i<9 then
                    istr1:='0'+intTostr(i+1)
                    else
                    istr1:= intTostr(i+1);
     
                   Query.Active:=False;
                    Query.SQL.Clear;
                      Query.SQL.add('UPDATE out_evo_tat');
                      Query.SQL.add('SET TAT_CHAINE = (SELECT AVG(DELTA_CKIN_RESAN)');
                      Query.SQL.add('FROM tests');
                      Query.SQL.add('WHERE TAT_CHAINE = out_evo_tat.TAT_CHAINE ');
                      Query.SQL.add('AND DELTA_CKIN_RESAN BETWEEN 0 AND 3600 ');
                   //   Query.SQL.add('AND tests.CKIN_NEMO_DT >= ''2013-07-30 '+istr+':00:00''');
                   //   Query.SQL.add('OR tests.CKIN_NEMO_DT < ''2013-07-30 '+istr1+':00:00''');
                      Query.SQL.add('AND out_evo_tat.Heure = ');
                      Query.SQL.ADD(Quotedstr(intTostr(i)));
                      Query.SQL.add(')');
                      Query.ExecSQL(true) ;
                    end;
                    i:=i+1;
                    until  i>23;
    ne me renvoie qu'un résultat à la dernière ligne (23) de la table out_evo_tat dans la bonne colonne TAT_Chaine (au lieu d'une valeur à chaque ligne de cette table) ?!?
    Déjà merci 1000x pour vos aides et suggestions

  9. #9
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    pour les 2 lignes que tu as commenté il y a une petite erreur de syntaxe : remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ''2013-07-30 '+istr+':00:00'''
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '2013-07-30 '+istr+':00:00'
    idem pour la deuxième ligne.
    Pour le reste, s'il n'y a qu'un enregistrement qui s'update, c'est soit
    - que les bonnes valeurs sont déjà dans le champ TAT_CHAINE sauf pour l'enregistrement où out_evo_tat.Heure vaut 23,
    - soit que la condition WHERE n'est remplie qu'une fois.
    Dans ce deuxième cas, le seul chgt dans ta condition est la valeur du champ out_evo_tat.Heure qui varie de 1 à 23. As tu des enregistrements de la table out_evo_tat dont la valeur du champ Heure soit un entier compris entre 0 et 22 ?

  10. #10
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    Merci ypcman mais celà me retourne une erreur Delphi:
    chaîne non-terminée!
    ...en fait pour faire accepter un ' dans une chaîne il faut doubler le ' en encodant '' (deux fois ')
    ce code ne me retourne pas d'erreur ni Delphi ni MySQL mais ne me retourne pas le résultat attendu :-(
    Si tu as une idée???

  11. #11
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    Bon, ceci fonctionne, j'ai bien un traitement du range entre les deux dates!!!
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    i:=0;
                 repeat
                    begin
                    if i<10 then
                    istr:='0'+intTostr(i)
                    else
                    istr:= intTostr(i);
                    if i<9 then
                    istr1:='0'+intTostr(i+1)
                    else
                    istr1:= intTostr(i+1);
     
                   Query.Active:=False;
                    Query.SQL.Clear;
                      Query.SQL.add('UPDATE out_evo_tat');
                      Query.SQL.add('SET TAT_CHAINE = (SELECT AVG(DELTA_CKIN_RESAN)');
                      Query.SQL.add('FROM tests');
                      Query.SQL.add('WHERE TAT_CHAINE = out_evo_tat.TAT_CHAINE ');
                      Query.SQL.add('AND DELTA_CKIN_RESAN BETWEEN 1800 AND 3600 ');
                      Query.SQL.add('AND CKIN_NEMO_DT >= ''2013-07-30 '+istr+':00:00''');
                      Query.SQL.add('AND CKIN_NEMO_DT < ''2013-07-30 '+istr1+':00:00''');
                      Query.SQL.add('AND Heure = ');
                      Query.SQL.ADD(Quotedstr(intTostr(i)));
                      memo1.Lines.Append(intTostr(i)+' '+istr+' '+istr1);
                      Query.SQL.add(')');
                      Query.ExecSQL(true) ;
                    end;
                    i:=i+1;
                    until  i>23;
    ... mais toujours renvoi d'un seul résultat en dernière ligne???

  12. #12
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    je ne vois pas se terminer la parenthèse ouvrante devant SELECT AVG ....ou encore A quoi s' applique la clause WHERE, à update ou à SELECT ?

  13. #13
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    ben,la parenthèse fermante est en avant dernière ligne:
    Query.SQL.ADD(')');

    ...la clause WHERE s'applique à SELECT
    ...dont une longue série de AND fait partie
    ...CKIN_NEMO_DT est un champ de la table 'tests'
    ...'heure' est un champ de la table 'out_evo_tat' (table de destination dont heure est le filtre
    ...TAT_CHAINE est le champ de destination de la requête de la même table out_evo_tat
    je pense que le champ heure pose problème:
    j'ai déjà changé son format de int en varchar mais pas mieux
    J'ai déjà remplacé heure par out_evo_tat.heure pas mieux non-plus
    ou alors ce sélecteur est mal placé??? pourquoi seulement la dernière ligne est ok???
    je crois que la solution n'est pas loin...

  14. #14
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Peux-tu executer des requêtes directement sur ta base, , genre un easyphp ou autre ?
    Si oui, tu aurais intérêt à faire afficher chaque code source de requête pour le copier-coller dans easyphp et mieux etudier ce qui se passe

    Tu peux aussi faire varier ton indice de 0 à 1 pour voir se qui se passe etc

  15. #15
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    je vais tester maintenant...
    je te dis quoi asap...

    merci pur ton aide Ypcman!!!

  16. #16
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    Ce code ci marche parfaitement!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    UPDATE out_evo_tat
    SET TAT_CHAINE = (SELECT AVG(DELTA_CKIN_RESAN)
    FROM tests
    WHERE TAT_CHAINE = out_evo_tat.TAT_CHAINE 
    AND DELTA_CKIN_RESAN BETWEEN 1800 AND 3600
    AND CKIN_NEMO_DT >= '2013-07-30 10:00:00'
    AND CKIN_NEMO_DT < '2013-07-30 11:00:00'
    AND Heure = 10);
    il n'y a plus qu'à l'intégrer dans Delphi et dans une boucle modifier l'heure des variables dates (ex: 2013-07-30 10:00:00 de 00:00:00 à 23:00:00
    et 2013-07-30 11:00:00 de 01:00:00 à 24:00:00
    et heure de 0 à 23)
    ...à suivre...

  17. #17
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    ...et voici le code: il me retourne la valeur correcte dans le dernier enregistrement de la boucle uniquement???
    Si je réduit i en sortie de boucle, par exemple à 6 au lieu de 23, l'enregistrement correspondant à 6 heure est modifié, mais ni les enregistrements précédents ni suivants ne le sont!?!
    Bizarre???
    Voici mon code:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    i:=0;
                 repeat
                    begin
                    if i<10 then
                    istr:='0'+intTostr(i)
                    else
                    istr:= intTostr(i);
                    if i<9 then
                    istr1:='0'+intTostr(i+1)
                    else
                    istr1:= intTostr(i+1);
     
                      Query.Active:=False;
                      Query.SQL.Clear;
                      Query.SQL.add('UPDATE out_evo_tat');
                      Query.SQL.add('SET TAT_CHAINE = (SELECT AVG(DELTA_CKIN_RESAN)');
                      Query.SQL.add('FROM tests');
                      Query.SQL.add('WHERE TAT_CHAINE = out_evo_tat.TAT_CHAINE ');
                      Query.SQL.add('AND DELTA_CKIN_RESAN BETWEEN 1 AND 3600 ');
                      Query.SQL.add('AND CKIN_NEMO_DT >= ''2013-07-30 '+istr+':00:00''');
                      Query.SQL.add('AND CKIN_NEMO_DT < ''2013-07-30 '+istr1+':00:00''');
                      Query.SQL.add('AND Heure = ');
                      Query.SQL.ADD(Quotedstr(intTostr(i)));
                      //memo1.Lines.Append(intTostr(i)+' '+istr+' '+istr1);
                      Query.SQL.add(')');
                      Query.ExecSQL(true) ;
                    end;
                    i:=i+1;
                    until  i>23;
    HELP!!!

  18. #18
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Je pense que le problème vient du fait que l'UPDATE se fait sans condition WHERE qui preciserai sur quel enregistremen appliquer l'update. Or cest justement sur lheure quil me semble doit se faire le choix.
    Je te suggère donc de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Query.SQL.ADD(' AND Heure = '); 
    Query.SQL.ADD(Quotedstr(intTostr(i)));
     //memo1.LINES.Append(intTostr(i)+' '+istr+' '+istr1); 
    Query.SQL.ADD(')'); 
    Query.ExecSQL(true) ;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Query.SQL.ADD(' ) WHERE Heure = '); 
    Query.SQL.ADD(Quotedstr(intTostr(i))); 
    //memo1.LINES.Append(intTostr(i)+' '+istr+' '+istr1); 
    // Query.SQL.ADD(')'); 
    Query.ExecSQL(true) ;

  19. #19
    Membre éclairé
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 478
    Par défaut
    Merci Ypcman
    En final, j'ai décomposé en deux blocs (Query AVG et query fill field)
    Voici mon code:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    repeat
                    begin
                    if i<10 then
                    istr:='0'+intTostr(i)
                    else
                    istr:= intTostr(i);
                    if i<9 then
                    istr1:='0'+intTostr(i+1)
                    else
                    istr1:= intTostr(i+1);
     
      //           query AVG
                      Query.SQL.Text := (
                      'SELECT AVG(DELTA_CKIN_RESAN) '
                      +'FROM tests WHERE TInstrumentCode IS NOT NULL '
                      +'AND DELTA_CKIN_RESAN > ''00:00:01'' '
                      +'AND DELTA_CKIN_RESAN < '+Quotedstr(CKIN_RESAN_limit)
                      +'AND tests.DEM_NEMO_DT >= ''2013-07-30 '+istr+':00:00'' '
                      +'AND tests.DEM_NEMO_DT < ''2013-07-30 '+istr1+':00:00'' ' );
                    Query.Open;
                    temp := floatToStr(trunc(Query.Fields[0].Asfloat));
                    Query.Close;
                  //memo1.Lines.Append(temp);
     
     //           query fill field
                  Query.Active:=False;
                    Query.SQL.Clear;
                    Query.SQL.add('UPDATE out_evo_tat SET ');
                    Query.SQL.add('TAT_CHAINE = '+temp);
                    Query.SQL.ADD(' WHERE Heure = ');
                    Query.SQL.ADD(Quotedstr(intTostr(i)));
                    Query.ExecSQL(true) ;
                 //  memo1.Lines.Append(IntToStr(i));
    end;
                    i:=i+1;
                    until  i>23;
    ...et maintenant c'est nickel!!!
    Merci 1000x et très bon week-end!!!

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

Discussions similaires

  1. recuperer champs texte dans variable session via javascript
    Par richton95 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/03/2006, 14h17
  2. Sélection dans un query via case à cocher dans un form
    Par Bernard123 dans le forum Access
    Réponses: 2
    Dernier message: 22/12/2005, 14h49
  3. Modifier la variable desktopwidth en delphi possible ?
    Par ludo5532 dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 31/08/2005, 08h12
  4. [Firebird D7] Modifier une procedure stocké via Delphi
    Par EGI dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 30/03/2005, 15h54
  5. Communication RS232 avec un PIC via delphi
    Par JeanPh dans le forum API, COM et SDKs
    Réponses: 22
    Dernier message: 09/08/2004, 22h56

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