Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité
    Invité(e)

    Par défaut [HF17] Utiliser une variable Fichier : possible ?

    Bonjour,

    Soit le code
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    LOCAL
      i est un entier
    POUR i = 1 _A_ HNbEnr(CLIENT, hEtatTous)
      HLit(CLIENT, i)
      SI HEtat() = hEtatActif ALORS  Message(CLIENT.NOM)
    FIN
    POUR i = 1 _A_ HNbEnr(FOURNISSEUR, hEtatTous)
      HLit(FOURNISSEUR, i)
      SI HEtat() = hEtatActif ALORS Message(FOURNISSEUR.NOM)
    FIN
    Est-il envisageable de créer une procédure utilisable ainsi : LireFichier(CLIENT); LireFichier(FOURNISSEUR) avec
    Code :
    1
    2
    3
    4
    5
    6
    7
    Procedure LireFichier(Fichier est un ?????)
    LOCAL
      i est un entier
    POUR i = 1 _A_ HNbEnr(Fichier, hEtatTous)
      HLit(Fichier, i)
      SI HEtat() = hEtatActif ALORS  Message(Fichier.NOM)
    FIN
    ...et dans ce cas quel est le type de Fichier ? J'avais pensé initialement Source de Données mais j'obtiens l'erreur
    Erreur :'CLIENT' est ici considéré comme le fichier HyperFileSQL. Pour accéder à un autre élément, utilisez une déclaration externe.

    Merci.
    Dernière modification par Invité ; 29/12/2012 à 17h04.

  2. #2
    Membre expérimenté
    Homme Profil pro Jean-Jacques MONOT
    Responsable des études
    Inscrit en
    février 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Jacques MONOT
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : février 2010
    Messages : 345
    Points : 598
    Points
    598

    Par défaut

    Tun'as qu'à passer le nom en variable dans une chaine et puis ensuite tu fais une indirection avec des accolades pour faire un fOuvre, etc....

    Ps: faire un pouce sur ma reponse si cela marche.

  3. #3
    Invité
    Invité(e)

    Par défaut

    En effet, cela fonctionne ainsi :
    Code :
    1
    2
    3
    4
    5
    6
    7
    PROCEDURE LireFichier(Fichier est une chaîne)
    LOCAL
    	i est un entier
    POUR i = 1 _A_ HNbEnr(Fichier, hEtatTous)
    	HLit(Fichier, i)
    	SI HEtat() = hEtatActif ALORS  Message({Fichier+".NOM"})
    FIN
    C'est très curieux comme transtypage Fichier -> Chaine <-> Fichier Hyperfile...
    Merci.
    A+

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    septembre 2010
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 269
    Points : 654
    Points
    654

    Par défaut

    Bonjour à tous et meilleurs voeux pour la nouvelle année !

    Désolé si je réponds un peu tard, mais il fallait enrichir cette discussion avec des informations supplémentaires.

    Citation Envoyé par ApproxDev Voir le message
    Est-il envisageable de créer une procédure utilisable ainsi : LireFichier(CLIENT); LireFichier(FOURNISSEUR) avec

    Code :
    1
    2
    3
    4
    5
    6
    7
    Procedure LireFichier(Fichier est un ?????)
    LOCAL
      i est un entier
    POUR i = 1 _A_ HNbEnr(Fichier, hEtatTous)
      HLit(Fichier, i)
      SI HEtat() = hEtatActif ALORS  Message(Fichier.NOM)
    FIN
    ...et dans ce cas quel est le type de Fichier ? J'avais pensé initialement Source de Données mais j'obtiens l'erreur
    Oui c'est possible et, pour cela, le mieux est de ne pas typer le paramètre.
    Cependant, le compilateur ne peut pas garantir que le nom de la rubrique est valide.

    Code :
    1
    2
    3
    4
    5
    6
    Procedure LireFichier(Fichier)
    i est un entier
    POUR i = 1 _A_ HNbEnr(Fichier, hEtatTous)
      HLit(Fichier, i)
      SI HEtat() = hEtatActif ALORS Message(Fichier.NOM)
    FIN
    Ici le paramètre "Fichier" peut être au choix :
    • le nom logique d'un fichier HyperFile (fichier de données existant, requête créée dans l'éditeur et exécutée),
    • une source de données (sur un alias de fichier de données, sur une requête SQL exécutée).


    Par "nom logique" il faut comprendre, un nom de fichier déclaré dans l'analyse ou un nom de requête définie dans le projet. Ce nom est noté tel quel, et pas comme une chaîne de caractères encadrée par des guillemets.

    Pour récupérer la valeur d'une rubrique il faut au préalable lire les données d'un enregistrement afin de renseigner les "variables HyperFile" qui correspondent à ces rubriques (tampon des valeurs de rubrique).
    Cf. les fonctions HLit*


Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •