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

HyperFileSQL Discussion :

[HF17] Utiliser une variable Fichier : possible ?


Sujet :

HyperFileSQL

  1. #1
    Invité
    Invité(e)
    Par défaut [HF17] Utiliser une variable Fichier : possible ?
    Bonjour,

    Soit le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Points : 812
    Points
    812
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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*


Discussions similaires

  1. utiliser une variable globale d'un fichier à l'autre
    Par sheridan08 dans le forum Général Python
    Réponses: 8
    Dernier message: 03/04/2014, 13h19
  2. [Batch] Utiliser une variable dans un nom de fichier
    Par ted the Ors dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 07/07/2013, 16h28
  3. utiliser une variable javascript globale dans un fichier html
    Par Nico_SAS dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/03/2012, 15h02
  4. utiliser une variable comme nom d'objet! est-ce possible?
    Par Rusty2096 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 07/06/2009, 15h33
  5. Utiliser une variable comme nom de fichier
    Par lo00_ dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/06/2006, 13h57

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