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 :

faire un filtrage par date sur base de donnee "delphi


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 13
    Points
    13
    Par défaut faire un filtrage par date sur base de donnee "delphi
    salut tous le monde

    je travaille sur une application et que j'arrive pas a realise un programme pour cette derniere. j'ai une table qui s'appele achat et contient les champs suivants

    Achat ( numero_achat , date_achat , designe_produit ,quantite_achat, prix_achat , nom_fournisseur )

    j'aimerai faire un filtrage sur ma table achat par le champ date achat (filtrage sur l'annee et le moi).
    si par exemple l'utilisateur de cette application veus voir les achats de n'importe qelle annee ou moi en entron juste l'annee ou le moi voulue et en un simple clique il voi affichè sur le "DBGride" que les achats de l'annee voulue ou le moi voulue

    ( exemple pour mieux comprendre en entron l'annee 2003 le programme va filtrè la table achat et affiche que les achats de l'annee 2003 sur cette meme annee en entron le moi de janvier le programme va filtrè la table achat et affiche que les achats du moi de janvier de l'annee 2003).

    j'ai fait le programme suivant qui consiste a faire une recherche en premier et n'en pas un filtrage et j'ai mis sur ma fiche un DBGrid et Boutton et Edit et le programme suivant et ça n'a pas marche

    begin
    table1.Open;
    table1.first;
    if not table1.FindKey([edit1.Text])then
    else
    begin
    edit1.Text:=datetostr(table1.date_achat.value);
    end;
    end;

    en suite j'ai fait le programme du filtrage

    Table1.open;
    if edit1.text<> '' then
    begin
    Table1.filter:='date_achat='+edit1.text;
    Table1.filtered:=true;

    Si vous pouvez m'indique mes erreurs et me répondre avec un peus plus de détaille je vous serais trés reconnaissant.

    Veuillez me répondre le plus tot possible sur mon E-Mail
    medsoft313@yahoo.fr

    merci infiniment .

    Bonne Année et que votre vie soit pleine de succés et de réussite ...

  2. #2
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Bien le bonjour
    bonjour Medsoft,

    Tout d'abord pourrais-tu nous dire si ton champ date est en caractère, en date ou autres ?

    De plus ton filtre n'est pas correct mais pour répondre correctement à ta question donne-nous le type du champ date-achat.

    Rickless

  3. #3
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Le filtrage n'est pas approprié à ton cas.
    Il faut utiliser à mon avis un index.

    Créé un index 'IndexDateAchat' composé de ta date d'achat

    Ensuite, tu délimites ta plages de date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DDate1 := 1er jour de l'année
    DDate2 := Dernier jour de l'année
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DDate1 := 1er jours de ton mois
    DDate2 := Dernier jours de ton mois
    En fait, tu construits la section de date que tu veux.

    Tu poses une table utilisant ton index 'IndexDateAchat'

    et pour la 'Filtrer',
    tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableAchat.SetRange( [ DDate1 ], [ DDate2 ] );
    et là c'est instantané contrairement à un filter, qui est là en dernier recours (car + lent)

    par contre, à toi de construire correctement ta date
    (tu as les fonctions EndOfTheYear ou End OfThe month etc... dans l'unité DateUtils...)

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 13
    Points
    13
    Par défaut Re: Bien le bonjour
    Merci pour votre aide
    le type du champ date_achat et " Date "

  5. #5
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Bonjour,

    Il y a plusieurs possibilités mais si tu donnes plus d'infos concernant la base de donnée et les composants utilisées.
    sinon tu peux utilise un Query et
    primo : construire dynamiquement les conditions.
    secondo : rajoutter des champs calculés MOIS et ANNEE et appliquer les filtres sur ces champs.

    Cdt.

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 13
    Points
    13
    Par défaut Andry
    Merci Andry pour ton aide
    je croi que j'ai tout expliquè. J'ai travailler avec module base de donnee pour delphi 7 edition entreprise et le type de ma table et pradox et le champ date_achat et de type "date"
    et les autres champs sans de type numerique ou bien alphabitique
    alors sur tu as une astuce ou quelq'un connait la repense n'esitè pas a me contactè

  7. #7
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Alors a mon avis, pour pouvoir filtrer sur le mois ou année d'une date, la plus simple est d'utiliser un Query et de creer deux champs calculés mois_achat et annee_achat calculé à partir de date_achat. Après, il ne te teste plus qu'a mettre et valider ton filtre.
    Il y a aussi une deuxième methode un peu plus compliqué. Il te faut aussi un Query
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       SELECT
           numero_achat , date_achat , designe_produit ,quantite_achat, prix_achat , nom_fournisseur 
       FROM ACHAT
    A chaque fois que tu veux filtrer, tu rajoute la condition suivante à ta raquête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        WHERE 
            (date_achat >= :Pdate_deb) AND
            (date_achat <= :Pdate_fin)
    Apres, il te faut analyser le filtrage, il va faloir coder un peu, par exemple :
    - si tu veux les achats de Janvier 2006, il suffit juste de mettre 01/01/2006 dans Pdate_deb et 31/01/2006 dans Pdate_fin.
    - si tu veux les achats de 2005, mettre 01/01/2005 dans Pdate_deb et 31/12/2005 dans Pdate_fin.
    Tu as des routines de gestion de date dans l'unité DateUtils.

    A+

  8. #8
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 30
    Points : 13
    Points
    13
    Par défaut
    Salut Andry et merci infinimant pour ton aide
    je vai applique les astuces que tu ma donnee et j'espaire que ça marchera
    merci encore Medsoft

Discussions similaires

  1. Requete : Problème de filtrage par date
    Par flamby6969 dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2007, 14h29
  2. Réponses: 2
    Dernier message: 01/03/2007, 18h04
  3. Mise à jour de date sur base MySQL
    Par tristus dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 14/01/2007, 14h47
  4. Filtrage par date
    Par zastas dans le forum Bases de données
    Réponses: 6
    Dernier message: 09/04/2006, 17h54

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