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 :

Recherche avec un MonthCalendar


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2014
    Messages : 25
    Points : 17
    Points
    17
    Par défaut Recherche avec un MonthCalendar
    Bonjour
    Je suis nouveau dans le forum, je vais vais souvent sur le site "Developpez.com" et là je me suis inscrit car je reprend un peu d'activité avec "Delphi".J'espère obtenir des réponses et pouvoir aussi aider(cela va etre dur).
    Voila, ma question est :
    Je voudrais faire une recherche de 'date multiple' avec le composant "MonthCalendar".
    J'ai mis a 'true' la propriété "Multiselect" du composant "MonthCalendar".
    Ensuite j'ai ecrit se bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.MonthCalendar1Click(Sender: TObject); 
    begin 
    table1.Active:=false; 
    table1.Filter:='Deb='''+monthcalendar1+''''; 
    table1.Filtered:=true; 
    table1.Active:=true; 
    end;
    et a partir de là, je lancerai l'appli, et quand je sélectionne plusieurs date avec la souris directement sur le "monthcalendar", cela me les affiche dans mon dbgrid.
    Mais le soucis est que cela bloque à ma 4eme ligne du code ci-dessus.......???

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour, Bienvenue en tant que membre

    pour ce qui est des filtres (filter:=) je suis contre et préfère nettement une bonne query à une table (sauf peut être avec Paradox)

    pour moi , de toutes façons ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table1.Filter:='Deb='''+monthcalendar1+'''';
    (tu noteras que ce dernier est "balisé" (tu sélectionne le code sur ton message et utilises le bouton [#])
    est certainement faux , tu ajoutes a une string ce qui est un composant !

    je ne savais même pas que TMonthCalendar avait une propriété multiselect
    après avoir fouiller un peu il faut utiliser Date et EndDate donc cela donne quelque chose comme ça
    (ne connaissant pas le BDD , les filtres possibles et le format des dates dans la BDD)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    table1.Filter:=format('deb>=%s and deb<=%s',[QuotedStr(FormatDateTime('mm.dd.yyyy',MonthCalendar1.Date)),QuotedStr(FormatDateTime('mm.dd.yyyy',MonthCalendar1.EndDate))]);

    je préfère nettement une query paramétrée du genre
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM LATABLE WHERE LADATE BETWEEN :D1 AND :D2

    et donc un code du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Query1.Active:=False;
    Query1.ParamByName('D1').asDateTime:=MontCalendar1.Date;
    Query1.ParamByName('D2').asDateTime:=MontCalendar1.EndDate;
    Query1.Active:=True
    Reste que l’événement on clic du TmonthCalendar me parait douteux pour exécuter ce code , il vaut mieux passer par un bouton supplémentaire car c'est toute la zone du TmonthCalendar qui est réactive au Onclic , pas seulement les dates ! a moins de mémoriser date début date fin pour ne pas faire des Close/Open trop fréquents
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2014
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci pour cette reponse, j'ai donc essayé avec un Query et un bouton a part, voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    Query1.Active:=False;
    Query1.ParamByName('Deb').asDateTime:=MonthCalendar1.Date;
    Query1.ParamByName('Fin').asDateTime:=MonthCalendar1.EndDate;
    Query1.Active:=True;
    end;
    Quand je lance l'appli, et que je selectionne qqes dates sur MonthCalendar, et ensuite click sur le bouton, il ne se passe rien dans le Dbgrid.il n'y a pas de recherche.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2014
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    autant pour moi c'est bon....je continue

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

Discussions similaires

  1. Recherche avec Locate option lopartialKey
    Par jeje.r dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/12/2022, 10h56
  2. Recherche avec sed insensible à la casse
    Par _Mac_ dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 12/10/2005, 15h42
  3. Recherche avec des accents!?
    Par mona dans le forum Access
    Réponses: 3
    Dernier message: 14/06/2005, 20h36
  4. recherche avec findnearest
    Par souad26 dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/11/2004, 20h58
  5. Enlever la surbrillance lors d'une recherche avec vi
    Par sekiryou dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 04/03/2004, 13h55

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