Condition precise: date system actualisée égal ou supérieur [Résolu]

Messages postés
190
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015
- - Dernière réponse : cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
- 2 août 2012 à 20:38
Salut!

J'ai avec moi une logique qui fonctionne bien. Mais sortant un tout petit peu de sa marge. Je m'explique:
j'ai deux TDateTimePickers sur mon 'form' ("maDate_system" et "Confirmation_date").
1)
Ma première logique marche bien. Voici ce que j'ai fait:

if maDate_system <= Confirmation_date then
begin
showMessage('Attention: la confirmation de votre date a expiré');

2)
Ma deuxième logique est erronée (elle ne marche pas!). Que veux-je faire?
J'aimerai utiliser un champ "date_confirmee" d'une table dans laquelle il y a differentes dates. Ex: 20.01.2012, 15.05.2012, 07.07.2012
Mon TDateTimePicker placé sur mon "form" appelé "maDate_system" est toujours actualisé dans l'évènement "OnShow" avec ce petit code maDate_system.DateTime:= date();
Et alors, j'essaie de dire si dans ma colonne "date_confirmee" se trouve une date supérieur ou égal à "maDate_system". Affiches-moi ce message 'Attention: la confirmation de votre date a expiré'.

voici mon code erroné qui a besoin d'une correction de votre part:
if qryTS_QS.Filter:='confirmation_date=' +dateTostr(confirmation?TS?QS.Date) = maDate_system.Date then
begin showMessage('Attention: la confirmation de votre date a expiré');

Developper est une dimension pour moi.
Leader2000
Afficher la suite 

13 réponses

Meilleure réponse
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
11
3
Merci
On ne comprend rien sur la finalité à obtenir.
tu débarques avec ton petit texte tout tremblant et planté
et tu voudrais que l'on comprenne en un clic ta logique..

Il faut d'abord apprendre à bien expliquer les choses et faire en sorte de bien présenter le code.

Déjà, on ne met pas de procédure de filtrage dans un OnActivate :
c'est le pire des endroits !

Quant au reste on ne sait rien..

qui saisit ?
où ?
pour faire quoi ?
messages d'erreurs ?

ça devient énervant à la fin..

Pour un filtre, il le faut d'abord le fermer
le créer
et ensuite l'ouvrir

ex :
QEmploye.Filtered := false;
QEmploye.Filter := ('(ADRESSE=''''') + ')' + ' AND ' + ('(TEL=''''') + ')';
QEmploye.Filtered := true; 


cantador

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
11
0
Merci
Bonjour,

3 signes '=' dans une expression, ça fait beaucoup..
de plus sur un if tu ne peux pas avoir d'affectation (pm :=)

cantador
Commenter la réponse de cs_cantador
Messages postés
105
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
8 avril 2019
2
0
Merci
Bonjour,
Je ne comprend pas bien le filtre sur qry.... à quoi sert il?. Deuxiemement une fois la condition de filtre établie il faut mettre Filtred à True pour que ça marche.
Pour ma part quand je travaillait je préférait l'évenement OnFilterRecorde.
Pour comparer une date qui se trouve dans une table avec la date du jour (c'est ce que renvoi ton TDateTimePicker maDate_systeme si je ne me trompe) je mettrai dans un événement genre BeforeScroll ou AfterScroll de la table une comparaison de date comme dans ta solution N°1
Pourquoi faire compliqué quand on peut faire simple.


pierrot
Commenter la réponse de pierrotk10d
Messages postés
190
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
Oui, c'est vous avez tous raison. Merci pour le conseil.
Mais mon problème est de faire simple bien sur. Mais comment??? J'ai deja fait un pas. J'ai besoin d'aide voilà pourquoi je viens ici...
Au fait, j'ai juste fait une comparaison-filtre (si je peux l'appeler ainsi) avec ma date sistème.
Dire: si ma date sistème est égal ou dépasse une des dates se trouvant dans le champ 'date_confirmee' de ma base de donnéee qu'il affiche: 'Attention: la confirmation de votre date a expiré'' à l'aide d'un showMessage

Developper est une dimension pour moi.
Leader2000
Commenter la réponse de Leader2000
Messages postés
190
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
Salut!
Apportez moi de l'aide, je vous en prie. Je suis conçé...!


Developper est une dimension pour moi.
Leader2000
Commenter la réponse de Leader2000
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
11
0
Merci
@leader2000:

Si tu veux de l'aide, il faut :

- mettre un code complet
- utiliser les balises de code


cantador
Commenter la réponse de cs_cantador
Messages postés
190
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
voici ce que je viens de faire. Mais il ne respecte pas.
Par exemple, si la date se trouvant dans mon TDateTimePicker est superieur à une des dates dans le champ 'confirmation_date'...
Et après avoir fait, il me filtre les donnés qu'il a trouvé (si il en trouve).

Procedure TTS_QS.FormActivate(Sender: TObject);
begin
if date_system.Date > qryTS_QS.FieldByName('confirmation_date').AsDateTime then
qryTS_QS.Filter:= FieldByName('confirmation_date').AsDateTime;
else end then
showMessage('Attention: la confirmation de votre date a expiré');


Developper est une dimension pour moi.
Leader2000
Commenter la réponse de Leader2000
Messages postés
190
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
Je suis dans un gros pétrin. Cette petite logique m'obstrue d'évoluer. Je ne peux rien faire... parce que le reste de ma prog depends du debloquage venant de votre part. J'arrive pas à évoluer. Prière de porter correction à mes codes s'il vous plait.


Developper est une dimension pour moi.
Leader2000
Commenter la réponse de Leader2000
Messages postés
190
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
Merci Cantador!

Je reconnais que ma reponse n'a pas été resolu totalement. Sauf en partie. Cela veut dire celle concernant le filtre.
La première question, les codes ont été donnés et j'ai essayé de m'expliquer. Mais apparement j'ai peut être pas été clair.
J'y reviens dans les prochaines minutes avec éclaircissement...

merci,
Developper est une dimension pour moi.
Leader2000
Commenter la réponse de Leader2000
Messages postés
190
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
Je m'explique en quelques mots avec precision.
A commencer, j'ai juste besoin dès l'ouverture de mon 'form', qu'il y est filtrage de deux dates: la date que je considere 'system' representée par un TDateTimePicker (maDate_system) et diverses dates déjà inserées se trouvant dans mon champ 'confirmation_date'. Ok, voici ma petite introduction.

1. J'ai pas mil codes écrits mes grands. C'est juste une seule ligne de code que j'ai mis dans l'evènement: OnShow.
2. voici le code:
if date_system.Date > qryTS_QS.FieldByName('confirmation_date').AsDateTime then
showMessage('Attention: la confirmation de votre date a expiré');
3. Que veux-je dans ce code?
si la date apparaissant dans maDate_system (TDateTimePicker) et supérieur à une des dates se trouvant dans le 'confirmation_date' affiche ce message 'Attention: la confirmation de votre date a expiré'.

Voilà tout. Juste ca. Si c'est pas toujours clair... Je serai certainement l'homme le plus incensé de la planète.

Merci et A+,




Developper est une dimension pour moi.
Leader2000
Commenter la réponse de Leader2000
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
11
0
Merci
je ne comprends toujours pas la logique :

date_system.Date ->> revoie la date inscrite dans le TdateTimePicker

ok

comment fais-tu pour inscrire une date pendant l'ouverture de la forme ?

cantador
Commenter la réponse de cs_cantador
Messages postés
190
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
salut cantador, voici ta question:

comment fais-tu pour inscrire une date pendant l'ouverture de la forme?

J'insere mes dates normalement comme ceci:

qryTS_QS.Append;
qryTS_QS.FieldByName('materiel').Asstring:= edt_materiel.Text;
qryTS_QS.FieldByName('nature').Asstring:= edt_nature.Text;
//je commence à inscrire mes données "date" ici
qryTS_QS.FieldByName('confirmation_date').AsDateTime:= date_confirmee.Date;
qryTS_QS.Post;

Developper est une dimension pour moi.
Leader2000
Commenter la réponse de Leader2000
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
11
0
Merci
bonsoir,

c'est impossible..
on ne peux saisir que lorsque la forme est
définitivement ouverte.

Il s'agit donc d'un problème de logique ou de stratégie qu'il faut expliquer..

Je te glisse néanmoins qu'on peut lire à l'ouverture d'une forme des informations
contenues dans une table..

si ça peut te mettre sur une piste.

cantador
Commenter la réponse de cs_cantador