PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → recherche de fichier non indexé
recherche de fichier non indexé
Iniciado por Maxime, 25,sep. 2019 10:35 - 9 respuestas
Miembro registrado
106 mensajes
Publicado el 25,septiembre 2019 - 10:35
Bonjour ,

Je possède le code suivant :

HLitRechercheDernier(HISTO_PILE_AUTOMATE_TISSAGE,IDHISTO_PILE_AUTOMATE_TISSAGE,DateSys())

SI HTrouve ALORS // trouve
SI HISTO_PILE_AUTOMATE_TISSAGE.DATE_HEURE_MAJ=DateSys() ALORS // égal a la valeur trouvé
RETOUR
SINON // différente de la précédant
HRAZ(HISTO_PILE_AUTOMATE_TISSAGE)
HISTO_PILE_AUTOMATE_TISSAGE.DATE_HEURE_MAJ=DateSys()
HISTO_PILE_AUTOMATE_TISSAGE.ETAT_PILE=sReponseautomate[[1]]
HAjoute(HISTO_PILE_AUTOMATE_TISSAGE)

FIN


SINON //premier ajout dans la base
HRAZ(HISTO_PILE_AUTOMATE_TISSAGE)
HISTO_PILE_AUTOMATE_TISSAGE.DATE_HEURE_MAJ=DateSys()
HISTO_PILE_AUTOMATE_TISSAGE.ETAT_PILE=sReponseautomate[[1]]


HAjoute(HISTO_PILE_AUTOMATE_TISSAGE)

FIN


Mais on vient de m'informer qu'il ne peut fonctionné car mon fichier HISTO_PILE_AUTOMATE_TISSAGE.DATE_HEURE_MAJ
n'est pas indexé .
Mon but est de faire un enregistrement par jour si la date = a la datesys on fait rien ,si elle est différente on ajoute a la BDD

Avec vous une idée de fonction que je peux utilisé pour faire ma recherche sur un fichier non indexé ?

Merci de votre attention
Cordialement M.P
Publicado el 25,septiembre 2019 - 10:41
qui t'as dit qu'il va pas fonctionner ? t'as essayé ?
ce n'est pas ça le rôle des index

à ta place je passe par des roquettes SQL , select x where y=var
Miembro registrado
106 mensajes
Publicado el 25,septiembre 2019 - 13:51
Mon patron m'a dit que ca marchais pas et que c'etait pas la bonne fonction pour parcourir un fichier non indexé

A savoir c'est tiré d'un protocole Modbus TCP/IP qui parle avec un automate .

c'est un fichier que je vais lire toutes les 10 secondes et donc la requete SQL je sais pas comment elle est faite .
Miembro registrado
1.640 mensajes
Publicado el 25,septiembre 2019 - 14:23
A mon avis de toute facon a un soucis :

HLitRechercheDernier(HISTO_PILE_AUTOMATE_TISSAGE,IDHISTO_PILE_AUTOMATE_TISSAGE,DateSys())
IDHISTO_PILE_AUTOMATE_TISSAGE = Entier (je pense vu le nom) et ton parametre de recherche est une date :(


Sinon, si c'est inscrit par ordre chrnologique :
HLitDernier(HISTO_PILE_AUTOMATE_TISSAGE)
dDateHeureMaj est une dateHeure = HISTO_PILE_AUTOMATE_TISSAGE.DATE_HEURE_MAJ
SI dDateHeureMaj..PartieDate = DateSys() ALORS // Si le dernier enregistrement de la table a pour date ce jour
RETOUR
SINON
// Traitement
FIN
Miembro registrado
4.361 mensajes
Publicado el 25,septiembre 2019 - 14:27
Bonjour,
Il suffit de l'indexer en passant DATE_HEURE_MAJ en clé avec doublon.
Qui plus est, même si HISTO_PILE_AUTOMATE_TISSAGE était indéxxé sur la date, ta recherche ne renverrait rien dans la mesure ou tu compare une date à la PK (à moins que la PK ne soit une date dans ce cas il y a un gros problème.)

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
106 mensajes
Publicado el 25,septiembre 2019 - 14:49
a vrai dire je suis perdu c'est pour ca que je viens ici

Pour résumé le but est de comparé ma date de mon fichier histo_date a la datesys .
Mon champ date dans mon fichier de donnée est déjà en doublons de mon coté .

Je ne sais pas comment m'y prendre actuellement .

j'ai pensé a crée deux variables afin de comparé deux dates transformé en entier qu'en dite vous ?
Miembro registrado
4.361 mensajes
Publicado el 26,septiembre 2019 - 08:13
Il suffit alors de faire la recherche sur la date et non sur la PK

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
106 mensajes
Publicado el 26,septiembre 2019 - 09:28
j'ai fais la modifie suivante :

HLitRechercheDernier(HISTO_PILE_AUTOMATE_TISSAGE,DATE_HEURE_MAJ,DateSys())

SI HTrouve ALORS // trouve
SI HISTO_PILE_AUTOMATE_TISSAGE.DATE_HEURE_MAJ=DateSys() ALORS // égal a la valeur trouvé
RETOUR
SINON // différente de la précédant
//HRAZ(HISTO_PILE_AUTOMATE_TISSAGE)
HISTO_PILE_AUTOMATE_TISSAGE.DATE_HEURE_MAJ=DateSys()
HISTO_PILE_AUTOMATE_TISSAGE.A_REMPLACER=sReponseautomate[[1]]
HAjoute(HISTO_PILE_AUTOMATE_TISSAGE)

FIN


SINON //premier ajout dans la base
HRAZ(HISTO_PILE_AUTOMATE_TISSAGE)
HISTO_PILE_AUTOMATE_TISSAGE.DATE_HEURE_MAJ=DateSys()
HISTO_PILE_AUTOMATE_TISSAGE.A_REMPLACER=sReponseautomate[[1]]
HAjoute(HISTO_PILE_AUTOMATE_TISSAGE)

FIN


Mais j'ai un soucis je l'ai mis sur une page pour test quand je viens sur la page ca marche nickel mais lors de l'éxécution du service rien ne ce passe .
Miembro registrado
4.361 mensajes
Publicado el 26,septiembre 2019 - 10:14
A priori, tu fais la comparaison avec un champ dateheure.
Il faudrait éventuellement voir avec une plage horaire.
Il faudrait passer par une requête.

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
106 mensajes
Publicado el 26,septiembre 2019 - 10:28
effectivement je compare deux dates mais sa marche.
j'ai l'impression mon service est buggé .

Merci de votre aide
Cordialement M.P