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 :

affiche les enregistrements de plus de 5 jours


Sujet :

Delphi

  1. #21
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 560
    Points : 25 153
    Points
    25 153
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    encore une fois comment un signe <= n'a pas été correctement recopié restera un mystère
    Parce que ta réponse a été purement ignorée depuis le début
    Et que d'origine, il y avait > et non <=
    Citation Envoyé par tarmo57 Voir le message
    Query1.SQL.Add ('WHERE (Date_enregistrement)>(Now()-5)');
    Citation Envoyé par SergioMaster Voir le message
    et si ... on avait une Description des champs de la table ...
    c'est vrai, un coup c'est Date_enregistrement et un autre c'est Date_arrive

  2. #22
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 503
    Points : 2 773
    Points
    2 773
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par tarmo57 Voir le message
    Merci ALWEBER

    ....
    merci par avance de votre aide
    il suffisait de rajouter des parenthèses autour de
    Active_Date_depart = "Non"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button1Click(Sender: TObject);
    var
      St1: String;
    begin
    St1 := ''''+DateToStr (now)+'''' ;
    Query1.SQL.Clear;
    Query1.SQL.Add('select * from corps.DB');
    Query1.SQL.Add ('WHERE (Active_Date_depart = "Non") And (Date_arrive)>('+st1+'()-5)');
    Query1.Open;
    end;)

  3. #23
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 503
    Points : 2 773
    Points
    2 773
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par tarmo57 Voir le message
    J'ai fais des tests la requête fonctionne super mais je n'est pas le résultat voulu
    je dois afficher tous les enregistrements qui ont plus de 5 jours d'enregistrements dans la base de donnée. La date de départ est Date_arrive après 5 jours et plus je les affichent dans un DBGrid.
    j'ai modifier dans tous les sens ,et rien n'a fonctionner .
    une idée ?
    Ou en est tu sur cette histoire de date ? Si cela fonctionne peut tu nous envoyer le résultat final.

  4. #24
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 560
    Points : 25 153
    Points
    25 153
    Par défaut
    Citation Envoyé par ALWEBER Voir le message
    il suffisait de rajouter des parenthèses autour de
    Active_Date_depart = "Non"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query1.SQL.Add ('WHERE (Active_Date_depart = "Non") And (Date_arrive)>('+st1+'()-5)');
    @ALWEBER, tu pourrais lire les autres réponses, tu t'obstines avec ton code alors qu'il contient une coquille !
    En plus, ce n'est pas des parenthèses qui manquent mais qu'il y a en trop !
    D'ailleurs, celle que tu conseilles autour de Active_Date_depart n'ont aucune utilité en SQL !
    Citation Envoyé par ShaiLeTroll Voir le message
    Si l'on regarde la requête générée par ce code 'WHERE (Date_enregistrement)>('+st1+'()-5)',
    on obtient WHERE (Date_enregistrement) > ('02/04/2012'()-5) .
    A ta décharge, il est vrai que tarmo57 ne cherche pas beaucoup !
    Il copie les erreurs au caractère près !


    Citation Envoyé par ALWEBER Voir le message
    Ou en est tu sur cette histoire de date ? Si cela fonctionne peut tu nous envoyer le résultat final.
    @ALWEBER, problème déjà résolu par Linkin et SergioMaster lié au > et au <=.
    > donnant les enregistrements dont la date est supérieure à celle d'il y a 5 jours
    <= donnant les enregistrements qui ont plus de 5 jours, ce que qui souhaité par tarmo57

  5. #25
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 503
    Points : 2 773
    Points
    2 773
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    @ALWEBER, tu pourrais lire les autres réponses, tu t'obstines avec ton code alors qu'il contient une coquille !
    En plus, ce n'est pas des parenthèses qui manquent mais qu'il y a en trop !
    D'ailleurs, celle que tu conseilles autour de Active_Date_depart n'ont aucune utilité en SQL !
    Ci joint un zip qui fonctionne. Effectivement il y avait une coquille
    Pour ce qui est du SQL elle est générée automatiquement dans PARADOX
    depuis QBE -> SQL d'ou les parenthèses qui ne sont effectivement pas obligatoires dans ce cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      St1 := ''''+FormatDateTime('dd.mm.yyyy',Now)+'''';
      Query1.SQL.Clear;
      Query1.SQL.Add('select * from corps.DB');
      Query1.SQL.Add ('WHERE Active_Date_depart = "Non" And (Date_arrive)>('+st1+'-5)');
      Query1.Open;
    Fichiers attachés Fichiers attachés

  6. #26
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 560
    Points : 25 153
    Points
    25 153
    Par défaut
    Teste juste cette variante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    St1 := ''''+DateToStr (EncodeDate(2011, 12, 30))+'''' ;
    Cela plante carrément !

    puis cette variante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    St1 := 'CAST('''+DateToStr (EncodeDate(2011, 12, 30))+''' AS DATE)' ;
    ça passe !

    Teste bien ton code avant de le soumettre en garantissant son exactitude, j'avais déjà pourtant fait la remarque sur le fait que par défaut la date est converti en format américain !

    je te laisse apprécier la dangerosité des opérations de date sous Parodox
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select NoFact, Date_Arrive, '01/04/2012'
    from "corps.db"
    where Active_Date_depart = "Non" AND Date_Arrive = '01/04/2012'
    Pas de Résultat, il n'a pas vu les deux lignes en '01/04/2012' puisqu'il cherche du '04/01/2012'

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select NoFact, Date_Arrive, cast('13/04/2012' as Date) - 12
    from "corps.db"
    where Active_Date_depart = "Non" AND Date_Arrive = cast('13/04/2012' as Date) - 12
    Nos deux lignes sont revenus !

    Tout aussi fun le '01/02/2012' et '02/01/2012' !

    CAST AS DATE choisi le format français si le jour est entre 13 à 31 sinon format américain, ça fume !

    Evidemment, cela énerve quand Filter fonctionne mieux qu'un SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      St1 := ''''+DateToStr(EncodeDate(2012, 04, 01))+'''' ;
      Query1.SQL.Clear;
      Query1.SQL.Add('select * from corps.DB');
      Query1.Open;
      Query1.Filter := 'Active_Date_depart = ''Non'' AND Date_Arrive = ' + St1;
      Query1.Filtered := true;
    Evidemment dans un Filter, il n'est pas possible d'ajouter un - 5, donc conclusion ParamByName

  7. #27
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 097
    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 097
    Points : 41 092
    Points
    41 092
    Billets dans le blog
    62
    Par défaut
    FormatdateTime n'est pas mal non plus comme fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    St1:=FormatDateTime('dd.mm.yyyy',Date-5)
    à noter , la présence des . et non des /

    Citation Envoyé par la mauvaise foi du troll
    Evidemment dans un Filter, il n'est pas possible d'ajouter un - 5, donc conclusion ParamByName
    @shailetroll suffit de calculer St1 avant

    Mais bon .... je hais les filtres j'adore les paramètres
    et qu'on ne me dise pas que Paradox est la crème des SGBD

  8. #28
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 560
    Points : 25 153
    Points
    25 153
    Par défaut
    Quel joli astuce ce point !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select 1 from "c:\exe.db" where "13.04.2012" = CAST("13/04/2012" as DATE)
    union
    select 2 from "c:\exe.db" where "13.04.2012" = CAST("04/13/2012" as DATE)
    union
    select 3 from "c:\exe.db" where "01.04.2012" = CAST("01/04/2012" as DATE)
    union
    select 4 from "c:\exe.db" where "01.04.2012" = CAST("04/01/2012" as DATE)
    -> 1, 2 et 4
    3 étant mal converti avec /



    Citation Envoyé par SergioMaster Voir le message
    @shailetroll suffit de calculer St1 avant
    C'était pour souligner que le Filter n'avait pas ce problème de conversion et qu'il restait bien sagement en Français

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    @ALWEBER, tu pourrais lire les autres réponses, tu t'obstines avec ton code alors qu'il contient une coquille !
    En plus, ce n'est pas des parenthèses qui manquent mais qu'il y a en trop !
    D'ailleurs, celle que tu conseilles autour de Active_Date_depart n'ont aucune utilité en SQL !

    A ta décharge, il est vrai que tarmo57 ne cherche pas beaucoup !
    Il copie les erreurs au caractère près !




    @ALWEBER, problème déjà résolu par Linkin et SergioMaster lié au > et au <=.
    > donnant les enregistrements dont la date est supérieure à celle d'il y a 5 jours
    <= donnant les enregistrements qui ont plus de 5 jours, ce que qui souhaité par tarmo57


    Non excuse ShaiLeTroll ,mais j'avais corriger les parenthèses, sans parenthèses il y a une erreur

  10. #30
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 560
    Points : 25 153
    Points
    25 153
    Par défaut
    Citation Envoyé par tarmo57 Voir le message
    j'ai fais des tests modifier un peu, mais j'ais toujours une erreur ,je ne comprend pas pourquoi
    utilisation incorrecte du mot clé Elément: ()-5)
    C'était à ceci que je faisais référence, si tu avais corrigé de toi-même les (), ton message ne faisait pas avancer le Schmilblick !

    Sinon pour finir, en utilisant ce code avec <=, as-tu le bon résultat ?
    evidemment à toi de choisir entre Date_enregistrement et Date_arrive
    si oui alors pense au bouton
    si non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Query1.SQL.Clear();
    Query1.SQL.Add('SELECT * FROM corps.DB');
    Query1.SQL.Add('WHERE Active_Date_depart = :HaveDep');
    Query1.SQL.Add('AND Date_arrive <= :FromDate)');
    Query1.ParamByName('HaveDep').AsString := 'Non';
    Query1.ParamByName('FromDate').AsDateTime := Date - 5; // IncDay c'est plus lisible ! non ?
    Query1.Open();

  11. #31
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 503
    Points : 2 773
    Points
    2 773
    Billets dans le blog
    10
    Par défaut
    J'ai rajouté le format de date américain. Voir l'exemple ex106a.zip dans les précédent messages. Ne pas tenir compte de ex106.zip. la table de test se trouve dans l'exemple.
    Fichiers attachés Fichiers attachés

  12. #32
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Points : 128
    Points
    128
    Par défaut ok
    OK merci a tous pour votre patience

    j'ai modifier légèrement le code il a l'air ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Query1.SQL.Clear();
    Query1.SQL.Add('SELECT * FROM corps.DB');
    Query1.SQL.Add('WHERE Active_Date_depart = :HaveDep');
    Query1.SQL.Add('AND Date_arrive + 3 < (:FromDate)');
    Query1.ParamByName('HaveDep').AsString := 'Non';
    Query1.ParamByName('FromDate').AsDateTime := Date; // IncDay c'est plus lisible ! non ?
    Query1.Open();
    merci encore une fois

  13. #33
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 097
    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 097
    Points : 41 092
    Points
    41 092
    Billets dans le blog
    62
    Par défaut

    tous ces messages pour ça

  14. #34
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 752
    Points : 13 336
    Points
    13 336
    Par défaut
    CQFD ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/12/2013, 18h59
  2. [MySQL] Afficher les enregistrements de moins de (x) jours.
    Par weelson@mac.com dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/02/2007, 18h31
  3. [MySQL] afficher les enregistrements apres 24h
    Par arti2004 dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/06/2006, 15h16
  4. Recuperer les enregistrements present plus de x fois
    Par rikewir dans le forum Requêtes
    Réponses: 5
    Dernier message: 05/04/2006, 16h05
  5. Afficher les enregistrements si le count() vaut 0
    Par j14z dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/04/2004, 09h51

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