IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Comment passer en paramètre à une fonction l'enregistrement courant d'une table HF obtenu grâce à un HFiltre() [WD14]


Sujet :

WinDev

  1. #1
    JMC
    JMC est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Comment passer en paramètre à une fonction l'enregistrement courant d'une table HF obtenu grâce à un HFiltre()
    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 :
    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)
    J'ai essayé diverses choses en début de la fonction TraiteLigneCourante() du genre HLit(), HLitRecherche(), etc...
    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

  2. #2
    JMC
    JMC est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Ne cherchez plus j'ai trouvé !

    En fait, j'utilisais la fonction HChangeConnexion() avec la valeur "*" pour le paramètre Liste des tables

    Je faisais cela entre la ligne de lecture et la ligne d'écriture.
    Ce qui me faisait perdre l'enregistrement courant.

    En effet, j'utilise plusieurs connexions différentes simultanemment.

    J'ai donc corrigé en remplaçant "*" par la liste des tables correctes.

    Donc, le code mis en exemple fonctionne parfaitement.

    @+
    JMC

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/05/2011, 12h48
  2. appel d'une fonction vb a partir d'une fonction javascript!
    Par labib23dz dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/07/2009, 11h04
  3. faire passer une fonction entant que parametre d'une fonction
    Par gali_fr dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/05/2008, 15h18
  4. Réponses: 6
    Dernier message: 08/12/2007, 14h33
  5. Réponses: 14
    Dernier message: 16/05/2006, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo