PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → recherche dans fichier
recherche dans fichier
Iniciado por franck.lancia, 26,sep. 2019 09:23 - 13 respuestas
Miembro registrado
88 mensajes
Publicado el 26,septiembre 2019 - 09:23
Bonjour,

j'ai un fichier "info du jour" qui se rempli au gré des utilisateurs.
Concernant ce fichier, je voudrais que sur la fenêtre d'accueil un petit libellé affiche "news" lorsque un enregistrement ai ete fait par qlq un d'autre que moi.

J'utilise une requete pour lire les infos sur une fenetre classique.

donc je voudrais lire dans cette requête, rechercher le dernier enregistrement, lire de qui il provient, le comparer à identifiant de connexion. et si c'est vrai le libellé reste affiche "pas de news" (car cela sera une info de moi) et si le dernier enregistrement vient d'un autre utilisateur le libellé affiche "news".

du coup j'ecris ca :

HExécuteRequête(REQ_infodujour)
SI HLitRechercheDernier(REQ_infodujour,Messagede,LIB_connect) = Vrai ALORS
LIB_newmail="pas de news"
SINON
LIB_newmail="news"
FIN


et bien ca ne marche pas, ca reste bloqué sur pas de news, alors que le dernier enregistrement dans le fichier n'est pas de moi.


donc je suis nul :D :D

ps: ce code est prévu dans un timer qui s'actualise toutes les 30 secondes.

merci

--
Merci ;) Franck
Miembro registrado
160 mensajes
Publicado el 26,septiembre 2019 - 09:31
donc ta requette , les enregistements sont trier par date ou pas ?
si oui n'oublie par de mettre Order by 'date'
Mensaje modificado, 26,septiembre 2019 - 09:34
Miembro registrado
88 mensajes
Publicado el 26,septiembre 2019 - 09:37
non ils sont triés par l'ID, et en ordre decroissant

--
Merci ;) Franck
Miembro registrado
160 mensajes
Publicado el 26,septiembre 2019 - 09:47
Bah c'est ça le problème , il faut les trier par date, parce que par ID, t'es pas sur que tu vas tomber sur le dernier enregistrement
Miembro registrado
88 mensajes
Publicado el 26,septiembre 2019 - 09:56
ok,

mais dans le fichier je n'avais pas mis de champs date. les messages se cumule simplement les uns les autres.


idéalement je rajoute un champs datesys dans le fichier ?


ou c'est inutile ?

--
Merci ;) Franck
Miembro registrado
4.361 mensajes
Publicado el 26,septiembre 2019 - 10:06
Bonjour,
Freak a écrit :
> Bah c'est ça le problème , il faut les trier par date, parce que par ID, t'es pas sur que tu vas tomber sur le dernier enregistrement
Si, il tombera sur le dernier enregistrement, mais pas forcément le plus récent.

Peut on avoir le code de la requête ?

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
88 mensajes
Publicado el 26,septiembre 2019 - 10:17
Bonjour Voroltinquo

ma requete : Afficher tous les IDinfodujour, infodujour, Messagede et Datemessage. Le résultat est trié selon la valeur de IDinfodujour par ordre décroissant.


SELECT
infodujour.IDinfodujour AS IDinfodujour,
infodujour.infodujour AS infodujour,
infodujour.Messagede AS Messagede,
infodujour.Datemessage AS Datemessage
FROM
infodujour
ORDER BY
IDinfodujour DESC


--
Merci ;) Franck
Miembro registrado
4.361 mensajes
Publicado el 26,septiembre 2019 - 10:54
En fait ta requête ne fait que sélectionner une partie de ta table InfoDuJour.
Pourquoi ne pas faire directement la recherche sur la table ?
HLitRechercheDernier(REQ_infodujour,Messagede,LIB_connect)

ou alors passer par la requête suivante :
SELECT
Max(InfoDuJour.IDInfoDuJour) AS DernierMessage,
InfoDuJour.MessageDe AS Auteur
FROM
InfoDuJour
WHERE
InfoDuJour..MessageDe <> {pAuteur} //Il faut que le nom ne soit pas le nom de connexion car on veut les message des autres
GROUP by
InfoDuJour.MessageDe


Le code devient alors
REQ__DernierMessageAuteur=LIB_Connect
SI HExécuteRequête(REQ__DernierMessageAuteur)<>0 ALORS
LIB_newmail="pas de news"
SINON
LIB_newmail="news"
FIN


--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
88 mensajes
Publicado el 26,septiembre 2019 - 11:12
sur la table ou sur la requete ca ne change rien, j'ai essayé deja.
si je fais

SI HLitRechercheDernier(infodujour,Messagede,LIB_connect) = Vrai ALORS
LIB_newmail="pas de news"
SINON
LIB_newmail="news"
FIN


le probleme est le meme je reste sur pas de news

--
Merci ;) Franck
Miembro registrado
4.361 mensajes
Publicado el 26,septiembre 2019 - 11:19
Ton code recherche TES messages et pas celui des autres.
Je viens de m'apercevoir d'une erreur dans mon code (si tu avais lu le code et pas fait un copier coller, tu aurais pu le voir)
REQ__DernierMessageAuteur.pAuteur=LIB_Connect
SI HExécuteRequête(REQ__DernierMessageAuteur)=0 ALORS
LIB_newmail="pas de news"
SINON
LIB_newmail="news"
FIN


--
Il y a peut être plus simple, mais, ça tourne
Mensaje modificado, 26,septiembre 2019 - 11:21
Miembro registrado
88 mensajes
Publicado el 26,septiembre 2019 - 11:20
je vais tester cela.

merci

--
Merci ;) Franck
Miembro registrado
88 mensajes
Publicado el 26,septiembre 2019 - 12:20
Je sais que mon code recherche mes messages, c'est pour ca que je lui dis de m'indiquer "pas de news", et que du coup si il ne me trouve pas "news"

--
Merci ;) Franck
Miembro registrado
4.361 mensajes
Publicado el 26,septiembre 2019 - 12:41
Ok.
Le problème est différent alors :
//Recherche du dernier enregistrement
SI HLitDernier(InfoDuJour) ALORS
//On compare l'auteur et l'utilisateur connecté
SI InfoDuJour.MessageDe=LIB_Connect ALORS //L'auteur du dernier message est l'utilisateur
LIB_newmail="Pas de nouveau message"
SINON
LIB_newmail="Il y a un message"
FIN
SINON
Erreur("Erreur dans la lecture des données"+CRLF+HErreurInfo)
FIN


--
Il y a peut être plus simple, mais, ça tourne
Mensaje modificado, 26,septiembre 2019 - 12:43
Miembro registrado
88 mensajes
Publicado el 26,septiembre 2019 - 13:56
j'ai testé cela, ca marche, par contre il faut que je l'intègre au timer maintenant, j'espère que je vais pas tout abimer :D

--
Merci ;) Franck