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 :

Filtre sur date


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Filtre sur date
    Comment faire le filtre sur une date?
    C'est à dire quand on fait le choit sur feuille de payement où il ya eu plusieurs payements et on veut faire le filtre par rapport à une date dont il ya plusieurs payement, comment le faire?
    Excusez moi des fautes.
    Merci par avance.
    Zizou7.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 621
    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 621
    Points : 25 321
    Points
    25 321
    Par défaut
    Je vois dans ma boule de cristal, le nom des champs, le nom des tables, je vois que tu ne fais pas plus d'effort

    Regarde
    Table.Filter
    WHERE mot clé vachement utile en SQL

    Tu ne poses pas des questions techniques mais fonctionnel sur le métier lié au logiciel que tu maintiens !
    Les Membres Forum ne sont pas là pour faire TON travail !
    C'est un Forum Delphi, pose des Questions sur le langage Delphi, pas sur de Compta !

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Filtre sur une date
    Voici mon exemple qui ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if EditRecherche.GetTextLen >0 then
     begin
    case radiogroup1.ItemIndex of
    0://Numero;
    begin
    base.tpolice.Filter:='Num_Police='''+EditRecherche.Text+'*''' ;
    base.tpolice.Filtered:=true;
    end;
    1://Date;
    begin
    base.tpolice.Filter:='Date_Expiration='''+EditRecherche.Text+'*''';
    base.tpolice.Filtered:=true;   end;
    Ici par exemple toutes les valeurs numerique et date ne marche pas.
    Par contre si je le fait par les caractères c'est à dire les
    string
    , ça marche.
    Aidez moi pour le cas des
    numeriques et dates

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 166
    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 166
    Points : 41 348
    Points
    41 348
    Billets dans le blog
    63
    Par défaut
    je deteste les filtres
    VIVE LE SQL ET LES REQUETES PARAMETREES

  5. #5
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 511
    Points : 838
    Points
    838
    Par défaut
    Un petit tour dans la FAQ

    et sans doute enlever :

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Filtre sur une date
    Je n'arrive pas à effectuer le filtre.
    Voici ce que j'ai écrit:
    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
    if EditRecherche.GetTextLen >0 then
     begin
    case radiogroup1.ItemIndex of
    0://Numero;
    begin
    base.tpolice.Filter:='Numero_Police='''+EditRecherche.Text+'*''' ;
    base.tpolice.Filtered:=true;
    end;
    1://Date;
    begin
    base.tpolice.Filter:='Date_Expiration='''+EditRecherche.Text+'*''';
    base.tpolice.Filtered:=true;   end;
    2:    //Souscripteur;
    begin
    base.tpolice.Filter:='Souscripteur='''+EditRecherche.Text+'*''';
    base.tpolice.Filtered:=true;
      end;
    end;
    Rien ne marche por le moment.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Oulà, c'est quoi toutes ces apostrophes !? Avec un QuotedStr, ça ne serait pas plus simple ? Quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    base.tpolice.Filter := 'Numero_Police=' + QuotedStr(EditRecherche.Text) + '*';
    A vérifier au niveau des ''' !

    D'autre part, tu n'es vraiment pas clair, c'est quoi tes champs numériques, dates, ... ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 166
    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 166
    Points : 41 348
    Points
    41 348
    Billets dans le blog
    63
    Par défaut
    mais surtout pourquoi un '*' en fin ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    0://Numero;
    begin
    base.tpolice.Filter:='Numero_Police='+EditRecherche.Text ;
    base.tpolice.Filtered:=true;
    end;
    2:    //Souscripteur;
    begin
    base.tpolice.Filter:='Souscripteur='+QuotedStr(EditRecherche.text);
    base.tpolice.Filtered:=true;
    Quant a la date , c'est beaucoup plus complexe puisque déjà
    - on ne connait pas la BDD donc le format de stockage
    - la saisie sera t-elle juste et sous quelle forme
    c'est pour cela entre autre que JE HAIS LES FILTRES et préfère les requêtes paramétrées

    Quelque tentative toutefois , si la date et uniquement la date est stockée (pas d'heure) une solution , transformé la date saisie en TDateTime ,
    récupérer la partie entière et faire comme en 1
    s'il y a l'heure essayer plutôt un filtre avec Date_Expiration>=Date AND Date_Expiration<Date+1

    Code sans conviction : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Var D : TDateTime;
    try
    D:=StrToDate(EditRecherche.text)
    except
      D:=Date; 
    end;
    base.tpolice.Filter:='Date_Expiration='+InttoStr(trunc(d));
    // ou 
    base.tpolice.Filter:='Date_Expiration>='+InttoStr(trunc(d))+' AND Date_Expiration<'+InttoStr(trunc(d+1));

  9. #9
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    @Zizou7

    Paramétor à parler (@Sergio), je rajouterais d'autre possibilité

    Format('Numero_Police = %s', EditRecherche.Text);
    pour la date
    FormatDateTime, qui à l'avantage de transformer ta date comme tu veux en string ensuite à toi de jouer.


    Et comme le souligne mon ami Sergio (@Paramétor ) si on connaissais le type de base que tu utilise se serait beaucoup plus facile.


  10. #10
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Filtre sur une date
    J'ai fait ma base en access et je l'attaque sous delphi7.
    Num_Police est de type entier long et date est de type Date.
    Ensuite la date est sous la forme Date/Heure sous access.
    Je dis que la base est en Access.
    Merci par avance.

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 166
    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 166
    Points : 41 348
    Points
    41 348
    Billets dans le blog
    63
    Par défaut
    ça sert à quoi de vous donner du code et de vous faire des remarques ?
    j'aurais préféré un résolu ou un le code ne fonctionne pas parce-que ....

    ou mieux encore : Comment faire sans utiliser les filtres ? ou comment je fais une requête paramétrée ?


    [Edit] j'ai enfin compris l'histoire de '*' , jai toujours préféré le mot clé LIKE dans ces cas là
    filtre:='CHAMP LIKE +QuotedStr('Valeur*');

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

Discussions similaires

  1. MySQL + c++ builder : Filtre sur date inposible
    Par fpascal dans le forum MySQL
    Réponses: 8
    Dernier message: 09/10/2008, 09h46
  2. [BOXI] Problème de filtre sur date
    Par Julien59 dans le forum Deski
    Réponses: 6
    Dernier message: 10/06/2008, 10h25
  3. Filtre sur date du jour + date du jour+1
    Par pierrot67 dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/05/2007, 07h21
  4. Problème de filtre sur date avec ADOQuery
    Par lingli dans le forum Bases de données
    Réponses: 12
    Dernier message: 30/04/2006, 15h40
  5. Filtre sur date
    Par MagicManu dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/08/2005, 00h05

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