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

Signaler
Messages postés
187
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015
-
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
-
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

13 réponses

Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
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
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
Bonjour,

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

cantador
Messages postés
103
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
9 avril 2020
2
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
Messages postés
187
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015

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
Messages postés
187
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015

Salut!
Apportez moi de l'aide, je vous en prie. Je suis conçé...!


Developper est une dimension pour moi.
Leader2000
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
@leader2000:

Si tu veux de l'aide, il faut :

- mettre un code complet
- utiliser les balises de code


cantador
Messages postés
187
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015

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
Messages postés
187
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015

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
Messages postés
187
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015

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
Messages postés
187
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015

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
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
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
Messages postés
187
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
28 août 2015

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
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
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