Condition precise: date system actualisée égal ou supérieur

Résolu
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015 - 24 juil. 2012 à 10:50
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 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

13 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
25 juil. 2012 à 14:54
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
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 juil. 2012 à 16:25
Bonjour,

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

cantador
0
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 3
24 juil. 2012 à 16:27
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
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
24 juil. 2012 à 16:50
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
25 juil. 2012 à 08:50
Salut!
Apportez moi de l'aide, je vous en prie. Je suis conçé...!


Developper est une dimension pour moi.
Leader2000
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
25 juil. 2012 à 09:41
@leader2000:

Si tu veux de l'aide, il faut :

- mettre un code complet
- utiliser les balises de code


cantador
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
25 juil. 2012 à 10:54
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
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
25 juil. 2012 à 12:07
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
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
26 juil. 2012 à 08:55
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
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
26 juil. 2012 à 09:45
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
27 juil. 2012 à 12:31
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
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
2 août 2012 à 16:00
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
2 août 2012 à 20:38
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
0
Rejoignez-nous