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

Langage Delphi Discussion :

onFilterRecord => plusieurs dates une seule sortie


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 6
    Points
    6
    Par défaut onFilterRecord => plusieurs dates une seule sortie
    Bonjour à toutes et à tous,

    J'ai un problème d'ordre logique... Je filtre des tables avec des setRangeStart, setRangeEnd etc.. sur des dates. Exemple: va chercher seulement les employés qui ont travaillé entre telle et telle date. Ça ça marche. Le problème c'est quand arriver à la fin de l’évènement, il ya une fonction "check_exception", qui prend une date en paramètre et qui retourne un vrai ou faux. Si c'est vrai, le rapport affichera les infos de l'employé pour la date mise en paramètre, et faux rien ne sera afficher pour cette date.
    J'avais pensé faire une boucle de type For i := dateDebut à dateFin do
    begin tableauDeBoolean[indice] = check_exception(i) end;
    Je récupère le résultat pour chaque date... mais ensuite comment travailler avec ça... Etant donné que Accept ne prend qu'une seule valeur.

    Merci d'avance pour votre aide

    le code: http://pastebin.com/YrT6k9La

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 572
    Points : 1 046
    Points
    1 046
    Par défaut
    Bonjour,

    Je n'ai pas tout compris, mais à l'examen de ton événement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure TfmActExRpt.tbEMFilterRecord(DataSet: TDataSet;
      var Accept: Boolean);
    Je pense qu'il faudrait commencer par sortir toutes les affectations de cet évènement et les transférer vers une procédure dédiée. Ta procédure ci-dessus aurait simplement pour mission de mettre en œuvre ou pas les options souhaitées.

    Sans une vision de l'ensemble, il est difficile de répondre. Mais, il serait peut être suffisant d'ajouter une colonne boolean à ta table. Lors du test, du marque cette colonne pour afficher ou ne pas afficher.

    Il s'agit d'une piste, après il faudrait mieux comprendre ton projet pour répondre efficacement.

    Bon courage

    @+

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 119
    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 119
    Points : 41 252
    Points
    41 252
    Billets dans le blog
    63
    Par défaut
    Mais pourquoi utiliser la table entière et le OnFilterRecord alors qu'un SQL pourrait très bien gérer ça , et mieux
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM UNETABLE WHERE UNEDATE BETWEEN :D1 AND :D2
    Vous noterez , l'utilsation de paramètres pour passer les dates !

    PS. je déteste les filtres

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 572
    Points : 1 046
    Points
    1 046
    Par défaut
    Bonjour,

    @SergioMaster a écrit

    Mais pourquoi utiliser la table entière et le OnFilterRecord alors qu'un SQL pourrait très bien gérer ça , et mieux
    Code SQL :
    Sélectionner tout - Visualiser dans une fenêtre à part

    SELECT * FROM UNETABLE WHERE UNEDATE BETWEEN 1 AND 2

    Vous noterez, l’utilisation de paramètres pour passer les dates !
    Je suis bien d'accord avec toi, mais à l'examen de l'évènement, je ne suis pas certain que notre ami tienne à utiliser SQL. Il serait intéressant de connaître le MCD ou le MPD de l'application. L'analyse permettrait certainement d'apporter des modifications afin de simplifier la programmation.

    Pour les filtres, j'ai comme toi supprimé ceux-ci de mes lignes de programmation.

    @+

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par seabs Voir le message
    Bonjour,

    Je n'ai pas tout compris, mais à l'examen de ton événement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure TfmActExRpt.tbEMFilterRecord(DataSet: TDataSet;
      var Accept: Boolean);
    Je pense qu'il faudrait commencer par sortir toutes les affectations de cet évènement et les transférer vers une procédure dédiée. Ta procédure ci-dessus aurait simplement pour mission de mettre en œuvre ou pas les options souhaitées.

    Sans une vision de l'ensemble, il est difficile de répondre. Mais, il serait peut être suffisant d'ajouter une colonne boolean à ta table. Lors du test, du marque cette colonne pour afficher ou ne pas afficher.

    Il s'agit d'une piste, après il faudrait mieux comprendre ton projet pour répondre efficacement.

    Bon courage

    @+
    Pour la procédure je vais y réfléchir. Malheureusement je ne suis pas habilité à modifier les tables... Je dois faire avec ce qu'il ya là.
    Mon projet consiste à créer un nouveau rapport Crystal pour afficher des informations sur des employés. Je dois modifier le code existant pour que le rapport affiche les informations entre deux dates. À la base le code ne gère qu'une seule date à la fois... Mais l'idée de la procédure me parait très prometteur!

    Mais pourquoi utiliser la table entière et le OnFilterRecord alors qu'un SQL pourrait très bien gérer ça , et mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM UNETABLE WHERE UNEDATE BETWEEN :D1 AND :D2
    Vous noterez , l'utilsation de paramètres pour passer les dates !
    PS. je déteste les filtres
    Je travail en Delphi 5 et je suis novice dans ce langage. J'ai déjà essayé d' utiliser du sql mais je ne suis pas arriver à de bons résultats.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 119
    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 119
    Points : 41 252
    Points
    41 252
    Billets dans le blog
    63
    Par défaut
    Je travaille en Delphi 5 , J'ai déjà essayé d'utiliser du sql mais je ne suis pas arrivé à de bons résultats.
    le SQL n'est pas Delphi , c'est un standard d'interrogation de Base de Données.

    Je n'ai fait qu'entre-apercevoir le code du filtre (aujourd'hui je n'y ai pas accès) mais cela avait tellement l'air compliqué que je suis sur qu'il y a plus simple

    une Query sera certainement beaucoup plus simple et plus rapide . Il y a de bons cours SQL pour débutant http://sgbd.developpez.com/cours/ . Une description de la table serait une bonne idée si tu veux une solution

Discussions similaires

  1. Deux tables, plusieurs enregistrements, une seule ligne
    Par SoizicT dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/03/2011, 12h07
  2. [Toutes versions] Plusieurs boutons une seule macro
    Par JOLS40 dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/07/2010, 12h49
  3. Plusieurs connexions à une seule base de données
    Par mabool dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 26/01/2010, 15h11
  4. [MEX] plusieurs fonctions, une seule structure
    Par foobar420 dans le forum MATLAB
    Réponses: 9
    Dernier message: 22/10/2009, 00h59
  5. plusieurs domaines --> une seule adresse
    Par fpouget dans le forum Domaines
    Réponses: 8
    Dernier message: 09/09/2005, 03h45

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