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 :

Lecture d'une valeur dans un fichier [WD15]


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    developpeur
    Inscrit en
    Mai 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : developpeur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 77
    Par défaut Lecture d'une valeur dans un fichier
    Bonjour,

    Je suis à la recherche d'une piste.

    En effet j'ai un fichier nommé Oganisme, contenant les rubriques : Société, Capital, StatutJuridique.

    J'ai défini une variable global nommée : MtCapital

    je veux récuper le montant du capital d'une société à partir de son nom et l'affecter à la variable global que j'ai crée afin de la manipuler comme je veux. je ne veux en aucun cas l'afficher dans une table.

    Et pour celà : Losque j'excute Hexereq avec le paramètre suivi de la fonction TableAffiche, le résultat s'affiche bien dans la table crée sur une fenêtre.

    Mais je veux récuperer directement le résultat de la recherche dans la variable globale crée sans passer par une table.

    1) Dois - je forcement passer par une requête paramétrée, A ce niveau je le trouve impossible puisque le résultat sera 1 ou -1. ce qui ne peut pas être affecté.

    2) J'ai penser à cette piste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MtCapital = Organisme.Capital[2]..valeur
    je m'attendais à ce qu'elle me renvoie le capital de la société enrégistrée en 2 ème ligne.

    3) existe t-il une autre façon plus simple de récupérer la valeur d'une colonne à une ligne directement dans une variable déclarée; ?

    Les fonctions SQLlitcolonne sont - ils utilisables pour les fichiers crées dans l'analyse?

    Mais elle ne marche pas bien,

    Merci.

  2. #2
    Membre Expert Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Par défaut
    Hello,
    Ton code serait le bienvenue car je ne comprends pas pourquoi tu utilises

    MtCapital = Organisme.Capital[2]..valeur

    sauf si dans ton fichier, la rubrique capital est une rubrique 'tableau'.
    A mon sens, tu fais une confusion entre l'indice de ta table et ton fichier de données.

    mais cela sera confirmé par ton code... si tu veux bien le poster....

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Bonjour,
    Tu as plusieurs possibilités:
    1. Une requête paramétrée. Le résultat ne sera pas 1 ou -1 ,mais bien le contenu de ta colonne, mais il n'est pas renvoyé par hExecuteRequete ni hExeciteRequeteSql. Je te laisse voir l'aide en ligne...
    2. Une requete SQL, avec SqlExec, SqlPremier/SqlAvance. D'ailleurs les fonctions Sql* fonctionnent très bien "même" avec des fichiers de l'analyse
    3. Un "bête" hLitRecherchePremier...

    Quoi qu'il en soit, le code que tu proposes ne risque pas de fonctionner.

    Tatayo.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Par défaut
    Je crois comprendre. Le [2] s'applique mal à la notion de fichier...

    Pour répondre à ton besoin, je préconiserais une approche SQL avec des paramètres dynamiques... L'élément définit sera réutilisable à souhait.

    une solution du type (c'est du typage, pas du wl):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procédure SQL_obtenir_info_unique(matable, macolonnerecherchée, marecherche)
     
    Select [macolonnerecherchée] From [matable] where [macolonnerecherchée] = [marecherche]
     
    Si trouvé alors sUneValeur = [valeurtrouvée] sinon
    sUneValeur = ""
     
    Renvoyer sUneValeur
    Aussi, ce genre de requête ne devrait pas occasionner un gros traffic sur le serveur... sauf si c'est présent dans une boucle très longue. Dans ce cas, il serait préférable d'étendre ta recherche et de travailler temporairement avec les résultats.

    Bon dev,

    Jean-François

  5. #5
    Membre actif
    Homme Profil pro
    developpeur
    Inscrit en
    Mai 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : developpeur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 77
    Par défaut
    Bonsoir à tous

    merci pour vos propositions.


    0- Concernant la propositon de tatayo, je suis entrain de chercher les autres fonctions autre que Hexécuterequête.


    1- Pour les fonctions SQL j'ai composé ce code, mais il ne marche pas.

    moMontantcapital est un monétaire


    // Requête avec condition sur nom société.
    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
    bRes  est un booléen
    sTexRequête est une chaîne 
    // Requête avec condition sur nom société.
     
    sTexRequête = "SELECT Capital   FROM Organisme WHERE Société ="+ SAI_NomSociété       
    bRes =  SQLExec(sTexRequête, "REQ_Capital") 
    SI bRes = Vrai ALORS 
    SQLAssocie("REQ_Capital",montantcapital)
    SQLPremier("REQ2")
     
    SINON 	
    	Info( "Erreurn exécution reqête")
    FIN 
    SQLFerme("REQ_Capital")
    //Comment affecter  la valeur chargée en mémoire à la valeur MontantCapital. ?
     
    SAI_NombreActions= montantcapital/100000
    le code se plante. Ou se trouve le probllème ??

    INFO erreur : pas de connexion

    Erreur à la ligne 8 du traitement Clic sur BTN_SQL.
    Vous avez appelé la fonction SQLExec.
    Il n'y a pas de connexion courante.


    2- Concernant l'analyse de TAHITI il n'ay pas de confuision .Le code que j'avais proposé, ne renvoie la valeur que si une ligne est sélectionnée dans la table sinon erruer indice no valide, Or je ne veux pas utiliser une table pour récupérer. Donc oublier ce code.

    3- je ne crois pas que la fonction HlitrecherchePremier puisse marcher,

    Si j'écris ce code quelle colonne sera la colonne de parcours, Capital ou société ?, si c'est capital je dois renseigner la valeur à rechercher , or je ne la connais. Par contre si je considère Société comme la rubrique de parcours, je peux renseigner le nom de la société. L'enrégistrement sera lu. Mais comment recuper la valeur de la colonne capital pour cette ligne trouvée et lu par la fonction HLItrecherchepremier. S'il s'agissait d'afficher l'enrégistrement dans des champs et ensuite afecter la valeur du champ capital à ma variable, je serai du m^me avis pour cette fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    res est un boolen
     
    HLitRecherchePremier(Organisme,Société, "Valeur recherché")
    SI PAS HTrouve(Organisme) ALORS
    Erreur("Client non trouvé")
    RETOUR
    SINON
    // 
     
    MontantCapital =  ?????????       // il Doit recupérer la valeur de la colonne capital pour la société trouvée
     
    FIN
    A moins que je m'explique pas bien, si non je veux affecter la valeur lue à une variable qui servira à faire des calculs.

    a plus

  6. #6
    Membre Expert Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Par défaut
    Hello,
    Tu peux essayer cela et nous dire si cela fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    NomSociete est une chaine = ***mettre ici la valeur a recherche ***
    HRecherche(Organisme,Société, NomSociete)
    SI PAS HTrouve(Organisme) ALORS
       Erreur("Client non trouvé")
       RETOUR
    SINON
       // 
       HlitRecherche(Organisme,Société, NomSociete)
       //
       MontantCapital =  ?????????       // il Doit recupérer la valeur de la colonne capital pour la société trouvée
     
    FIN
    A tester...

  7. #7
    Membre éprouvé
    Homme Profil pro
    Main frame, Unix, Windows, AS400
    Inscrit en
    Mars 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Main frame, Unix, Windows, AS400
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 111
    Par défaut
    Ci-dessous, les données de l'aide (F1) :

    SQLExec (Fonction)
    Nomme et exécute une requête SQL.
    Attention : La fonction SQLExec ne lance pas le traitement de récupération du résultat en mémoire. La récupération du résultat est effectuée lors du premier appel à l'une des fonctions suivantes : SQLPremier, SQLTable ou SQLFetch.
    ...jettes un oeil dans l'aide en ligne pour l'information.

    bon dev,

    Jean-François

  8. #8
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Citation Envoyé par kinansoag Voir le message
    1- Pour les fonctions SQL j'ai composé ce code, mais il ne marche pas.

    moMontantcapital est un monétaire


    // Requête avec condition sur nom société.
    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
    bRes  est un booléen
    sTexRequête est une chaîne 
    // Requête avec condition sur nom société.
     
    sTexRequête = "SELECT Capital   FROM Organisme WHERE Société ="+ SAI_NomSociété       
    bRes =  SQLExec(sTexRequête, "REQ_Capital") 
    SI bRes = Vrai ALORS 
    SQLAssocie("REQ_Capital",montantcapital)
    SQLPremier("REQ2")
     
    SINON 	
    	Info( "Erreurn exécution reqête")
    FIN 
    SQLFerme("REQ_Capital")
    //Comment affecter  la valeur chargée en mémoire à la valeur MontantCapital. ?
     
    SAI_NombreActions= montantcapital/100000
    le code se plante. Ou se trouve le probllème ??

    INFO erreur : pas de connexion

    Erreur à la ligne 8 du traitement Clic sur BTN_SQL.
    Vous avez appelé la fonction SQLExec.
    Il n'y a pas de connexion courante.
    Déjà, le nom de la requête dans SqlPremier n'est par le bon (REQ_Capitale <> REQ2).
    Pour le problème de connexion, j'avoue que je ne sais pas trop, je n'utilise pas d'analyse, j'ai donc un SqlConnecte au lancement de l'application...

    Pour les ordres h*, si j'ai bonne mémoire (je ne les utilise jamais...):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    res est un boolen
     
    HLitRecherchePremier(Organisme,Société, "Valeur recherché")
    SI PAS HTrouve(Organisme) ALORS
    Erreur("Client non trouvé")
    RETOUR
    SINON
    // 
     
    MontantCapital =  organisme.capital      // il Doit recupérer la valeur de la colonne capital pour la société trouvée
     
    FIN
    La clé de parcours sera la société, puisque c'est la seule valeur connue.

    Tatayo.

  9. #9
    Membre actif
    Homme Profil pro
    developpeur
    Inscrit en
    Mai 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : developpeur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 77
    Par défaut
    Salut à tous, et merci encore

    Mon petit problème est résolu.

    1- la méthode de HlitRecherchePremier marche très :

    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
    bRes   est un booléen
    Valrech est une chaîne = SAI_NomSociété..ValeurAffichée
     
    HLitRecherchePremier(EXPRESS_Organisme,Société, Valrech) //
    SI PAS HTrouve(EXPRESS_Organisme) ALORS
    	Erreur("Société non trouvé")
    	RETOUR
    SINON
    	// 	
    	montantcapital =  EXPRESS_Organisme.Capital  
    	HAnnuleRecherche(EXPRESS_Organisme,Société)
     
    FIN
     
    SAI_NombreActions = montantcapital / nominal
    2- la méthode HexécuteRequête aussi marche, bien.


    bRes est un booléen

    // Requête avec condition sur nom société.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    bRes= HExécuteRequête(EXPRESS_REQ_Requête1,hRequêteSansCorrectionHF,SAI_NomSociété..ValeurAffichée)
     
    SI bRes = Vrai ALORS 
         HLitPremier(EXPRESS_REQ_Requête1)
      montantcapital   =  EXPRESS_REQ_Requête1.Capital
     
    SINON 	
    	Info( "Erreur exécution reqête")
    FIN 
     
    SAI_NombreActions= montantcapital/nominal
     
    HAnnuleDéclaration(EXPRESS_REQ_Requête1)  //
    3- Pour le méthode SQL, elle ne marche pas encore.



    Merci pour vos propositions.

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

Discussions similaires

  1. Modifier une valeur dans un fichier xml
    Par arthrax dans le forum VBScript
    Réponses: 3
    Dernier message: 03/04/2007, 09h46
  2. [XSLT] Tester la non présence d'une valeur dans un fichier
    Par arnauann dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/01/2007, 15h29
  3. Modifier une valeur dans un fichier sans passer par l'éditeur
    Par elkhy dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/06/2006, 00h15
  4. [D6] Recherche d'une valeur dans un fichier
    Par Lung dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 08h26
  5. [C#] [.NET] Lecture d'une classe dans un fichier
    Par niPrM dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2004, 08h57

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