Bonjour,
Je rencontre le problème suivant :
J'utilise la fonction HFiltre() pour récupérer une liste d'enregistrements que je parcours à l'aide de HLitPremier() puis HLitSuivant()
Pour chaque enregistrement, j'appelle une fonction qui a besoin de lire/écrire dans l'enregsitrement courant.
Or, à l'intérieur de la fonction appelée, je peux lire sans problème mais dès que j'essaie d'écrire, j'obtiens une gros plantage avec le message suivant :
Vous avez appelé la fonction HModifie.
Aucun enregistrement en cours n'est défini pour le fichier <MonFichier>.
Voici un extrait de mon code :
Algo principal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 sCleFiltre est une chaine sCleFiltre=HFiltre(MonFichier,"ChampA='valeurRecherchée'") // MonFichier est une table HF client/serveur SI sCleFiltre <> "" ALORS HLitPremier(MonFichier, sCleFiltre) TANTQUE PAS HEnDehors(MonFichier) MonFichier.ChampB = "blabla" HModifie(MonFichier) // Appel à la fonction de traitement TraiteLigneCourante() FIN HLitSuivant(MonFichier,sCleFiltre) FIN HDesactiveFiltre(MonFichier)
Fonction appelée :
J'ai essayé diverses choses en début de la fonction TraiteLigneCourante() du genre HLit(), HLitRecherche(), etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Procedure TraiteLigneCourante() // Affichage du contenu du ChampB, ça fonctionne // ça affiche le bon numéro d'enregistrement et la bonne valeur "blabla" Info(HNumEnr(MonFichier)) Info(MonFichier.ChampB) MonFichier.ChampG = "coucou" // En mode pas à pas, en arrivant sur la ligne ci-dessus, // On a perdu l'enregistrement courant // HNumEnr vaut -1 // La ligne suivante génère le message d'erreur HModifie(Monfichier)
Mais chaque fois même résultat, la lecture se passe bien mais l'écriture est impossible.
La question est donc :
Comment passer en paramètre à une fonction l'enregistrement courant d'une table HF obtenu grâce à un HFiltre() ?
Merci d'avance à tous ceux qui éclaireront ma lanterne
@+
JMC
Partager