Depuis WD 7.0 j'ai un problème que je n'ai jamais compris, mais toujours
réussi à contourner. C'est pourtant embêtant et puisqu'il s'est présenté
encore une fois j'aimerais savoir si quelqu'un a fait la même expérience
et trouvé la raison pour ce comportement:
Il s'agit d'une fenêtre avec une table fichier, alimenté par une
requête, sur le premier onglet et les données liées au fichier sur les
onglets 2 à 4. Afin de limiter le trafic réseau on ne lit le fichier que
pour raffraichir la requête et lorsqu'on veut accéder aux données sur
les onglets 2 à 4. L'ID est obtenu de la table.
On utilise des méthodes d'une classe pour se positionner dans le fichier
et envoyer les données vers l'écran
si HLitRecherchePremier(:cMasterTable, :cMasterIDFld, :nIDSQL) alors
FichierVersEcran (:cMasterWindow)
fin
HLitRecherche.. se positionne sur le bon enregistrement, mais
l'exécution de FichierVersEcran MODIFIE cette position sur un
enregistrement totalement différent, p.ex. de l'ID 41026 à 1474
(toujours vers le même pourtant, des fois différent suivant l'onglet
qu'on accède). Nous avons essayé avec toutes les formes de
FicherVersEcran, avec nom de la fenêtre plus nom de fichier, ainsi que
rien du tout. Le comportement reste le même. Un des onglets contient un
champ LookUp multi-fichier, tous les autres champs sont liés au même
fichier.
La recherche des données se fait dans "A chaque modification" de
l'onglet et il n'y a aucun autre traitement auparavant.
Le problème ne se pose pas lorsqu'on déplace la recherche des données
dans "Sélection d'une ligne" de la table sur le premier onglet. Mais
cette lecture est évidemment inutile juste pour se déplacer dans la table.
Quelqu'un sait l'expliquer ?
Merci
Mat
Je viens de trouver que le problème ne se produit non plus lorsque la
méthode de recherche des données de la classe est appellé directement de
"A chaque modification" de l'onglet au lieu d'être appellé par une autre
méthode de la classe... Ceci ne m'explique pas la chose mais est au
moins un contournement valable qui évite des lectures inutiles du fichier.