Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD7.5 206h] Faux comportement de HLitRechercheDernier ???

1 réponse
Avatar
mat
Bonjour,

J'ai remarqué à plusieures reprises des comportements étranges lors de
recherches génériques sur chaînes. Je pense avoir trouvé un autre qui
gêne une partie de mon programme et je prie ceux qui connaissent les
commandes HLitRecherche... de me dire si je me trompe quelque part:

Environnement: recherche sur résultat de requête, aucun filtre en place,
sur une rubrique composée d'une chaîne de 3 caractères et une date. En
débug, cette rubrique donne le contenu avec p.ex. "ABC20040519<0>". Il
est garanti qu'il y a un enregistrement avec la chaine initiale qu'on
cherche, mais pas la date.

Recherche: HLitRechercheDernier(sql_FileName,"KeyField",vKey,hGénérique)
Je veux trouver un enregistrement avec date égale ou inférieure à la clé
recherché. Ma clé de recherche correspond exactement à la structure du
fichier, y compris le <0> final. Dans mon exemple, la date recherché
n'existe pas mais le fichier contient 3 dates inférieures à la date
recherchée.

Clé de recherche: ABC20030724<0>
Position dans fichier après HLitRechercherDernier: ABC20030407<0>
HTrouve: FAUX

Selon l'aide en ligne (3e exemple dans le tableau: Dupon n'existe pas
mais la recherche est générique et il existe un Dupont (entre autres)),
la commande devrait se positionner sur le premier enregistrement avec
une valeur plus basse que celle recherché et HTrouve devrait donner
VRAI. En réalité, Windev se positionne correctement dans le fichier mais
HTrouve donne FAUX.

Avez-vous des indées comment résoudre cette situation avec les commandes
HLitRecherche?... Merci de votre aide.

Mat

P.S. Je sais que je peux contourner le problème avec une requête SQL,
mais cette solution est bcp moins efficace qu'un HLitRecherche sur un
fichier en mémoire, alors j'aimerais l'éviter.

1 réponse

Avatar
mat
N.B. Comportement pareil avec une recherche sur un index composée du
fichier.