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 :

Remplir une table windev a partir d'un fichier texte


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    loisir
    Inscrit en
    Juillet 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : loisir
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 46
    Par défaut Remplir une table windev a partir d'un fichier texte
    Suite a l'efficacité des membres de ce forum je viens exposer mon 2 éme blocage.

    Je cherche a remplir chaque colonne d'une table a partir d'un fichier texte .
    Je n'obtient que les noms.Les prénoms et matricules ne s'y inscrivent pas.
    Voici mon code et le résultat que j'obtient:

    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
    19
     
    nNumFichier est un entier
    sLigneLue est une chaîne
    sChaine est une chaîne
     
     
    TableSupprimeTout(TABLE_Sécurité)
    //ouverture du fichier txt
    nNumFichier = fOuvre ("C:\Mes Projets\MonFichier.txt", foLecture)
    //Lecture du fichier txt
    sLigneLue = fLitLigne(nNumFichier)
    	//tant que je vois des données
    	TANTQUE sLigneLue <> EOT 
    	//j'extrais les données
    	sChaine = ExtraitChaîne(sLigneLue,1,TAB)
    	//j'ajoute dans mon tableau les données	
    	TableAjouteLigne(TABLE_Sécurité,sChaine)
    	sLigneLue = fLitLigne(nNumFichier)	
    	FIN
    Nom : Capture.PNG
Affichages : 2306
Taille : 49,9 Ko

    Merci d'avance pour vos lumières

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 977
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 977
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    C'est logique, tu ne prends que le premier élément (à priori le nom) de la ligne lue.
    Il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TableAjoute(TABLE_Sécurité,sLigneLue)
    Par contre il serait préférable que tu enregistre tes données dans fRepData.

  3. #3
    Membre chevronné
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableAjoute(TABLE_Sécurité,sLigneLue)
    est pareille que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableAjoute(TABLE_Sécurité, sChaine1+TAB+sChaine2+TAB+sChaine3)
    mais pour avoir sChaine1, sChaine2, sChaine3 (les déclarer d'abord) et ensuite il va falloir les extraire suivant une boucle
    par exemple POUR i=1 _A_ 3, à mettre après la ligne 14 // j'extrais les données

    et également est pareille que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableAjouteLigne(TABLE_Sécurité, sChaine1,sChaine2,sChaine3)

  4. #4
    Membre averti
    Homme Profil pro
    loisir
    Inscrit en
    Juillet 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : loisir
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 46
    Par défaut
    Ca a fonctionné

    Merci Bien!!

  5. #5
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 977
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 977
    Billets dans le blog
    1
    Par défaut
    Une autre méthode, peut être un peu plus complexe, mais qui a l'avantage d'être facilement portable si tu décides de passer sur une base de données, est de passer par un tableau de classe qui sera lié au champ table.
    Cela a plusieurs avantages
    1-L'accès au disque sera moindre (tout se passe en mémoire)
    2-Les modifications de données seront plus faciles.

    Déclaration de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    COpérateur est une Classe
    	PRIVÉ
    	m_sPrénom est une chaîne
    	m_sNom est chaîne
    	m_sMatricule est chaîne
    	m_sAtelier est une chaîne
    	m_sPoste est chaîne
    FIN
    Méthodes de la classe :
    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
    19
    20
    21
     
    // Résumé : Affecte les données récupérées dans le fichier
    // Syntaxe :
    //SetOpérateur (<sDonnéesOpérateur> est chaîne [, <sSéparateur> est chaîne])
    //
    // Paramètres :
    //	sDonnéesOpérateur (chaîne ANSI) : Ligne d'un fichier
    //	sSéparateur (chaîne ANSI - valeur par défaut="TAB") : Caractère séparant les données dans le fichier
    // Valeur de retour :
    // 	Aucune
    //
    // Exemple :
    // Indiquez ici un exemple d'utilisation.
    //
    PROCÉDURE SetOpérateur(sDonnéesOpérateur est chaîne,sSéparateur est chaîne=TAB)
     
    p_sNom=ExtraitChaîne(sDonnéesOpérateur,1,sSéparateur)
    p_sPrénom=ExtraitChaîne(sDonnéesOpérateur,2,sSéparateur)
    p_sMatricule=ExtraitChaîne(sDonnéesOpérateur,3,sSéparateur)
    p_sAtelier=ExtraitChaîne(sDonnéesOpérateur,4,sSéparateur)
    p_sPoste=ExtraitChaîne(sDonnéesOpérateur,5,sSéparateur)
    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
    // Résumé : Formate les données pour les enregistrer dans le fichier
    // Syntaxe :
    //[ <Résultat> = ] GetOpérateur ( [<sSéparateur> est chaîne])
    //
    // Paramètres :
    //	sSéparateur (chaîne ANSI - valeur par défaut="TAB") : Caractère séparant les données dans le fichier
    // Valeur de retour :
    // 	chaîne ANSI : Données formatées
    //
    // Exemple :
    // Indiquez ici un exemple d'utilisation.
    //
    FONCTION GetOpérateur(sSéparateur est chaîne=TAB):chaîne
    sLigneOpérateur est chaîne
     
    sLigneOpérateur=ChaîneConstruit("%1%6%2%6%3%6%4%6%5",p_sNom,p_sPrénom,p_sMatricule,p_sAtelier,p_sPoste,sSéparateur)
     
    RENVOYER sLigneOpérateur
    Il ne faut pas oublier de créer les getters et les setters des membres. En WLangage, ce sont les opérateurs. Ce sont ces opérateurs qui seront liés au champ table.
    Avant de créer/modifier le champ table il faut absolument déclarer un tableau global. L'emplacement de la déclaration dépendra de la visibilité désirée. Dans notre cas, nous choisissons la déclaration de la fenêtre.
    par la même occasions nous allons nous occuper du chemin du fichier.

    Initialisation de la fenêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    gtabListeOpérateurs est tableau de COpérateur
    gsFichierOpérateur est une chaîne
     
    gsFichierOpérateur=fConstruitChemin(fRepDonnées,"MonFichier.TXT")
    Passons maintenant au champ table :
    -Dans la partie IHM :
    Vérifier que nous sommes en saisie
    -Dans la partie Détail :
    Vérifier que "Saisie en cascade" est coché
    -Dans la partie Liaison
    Sélectionner gtabListeOpérateur
    -Dans la partie contenu :
    Sélectionner le mode de remplissage "Par variable"
    Choisir comme source gtabListeOpérateur
    Choisir comme variable mémorisée (parfois appelée variable de retour ou de renvoi) p_sMatricule

    Il ne reste plus qu'à lier les colonnes aux opérateurs (au sens WLangage) qui les concernent.

    Le plus gros est fait.

    Code d'initialisation du champ table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fLitFichier(gsFichierOpérateur)
    Fin d'initialisation du champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TableAffiche(MoiMeme)
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    // Résumé : Lit un fichier et affecte les données à un tableau de classes
    // Syntaxe :
    //[ <Résultat> = ] fLitFichier (<sNomFichier> est chaîne)
    //
    // Paramètres :
    //	sNomFichier (chaîne ANSI) : Nom et chemin du fichier
    // Valeur de retour :
    // 	booléen : Vrai si tout s'est bien déroulé, faux si le fichier n'a pas pu être lu
    //
    // Exemple :
    // Indiquez ici un exemple d'utilisation.
    //
    FONCTION fLitFichier(sNomFichier est une chaîne):booléen
    clOpérateurCourant est COpérateur
    sLigneOpérateur est une chaîne
    nHandleFichier est un entier
     
    nHandleFichier=fOuvre(sNomFichier,foCréationSiInexistant+foLecture)
    SI  nHandleFichier=-1ALORS
    	RENVOYER Faux
    FIN
     
    //Prépare le traitement séquentiel
    sLigneOpérateur=fLitLigne(nHandleFichier,RC)
    //Traitement séquentiel
    TANTQUE sLigneOpérateur<>EOT
    	clOpérateurCourant.SetOpérateur(sLigneOpérateur)
    	TableauAjoute(gtabListeOpérateurs,clOpérateurCourant)
    	sLigneOpérateur=fLitLigne(nHandleFichier,RC)
    FIN
    fFerme(nHandleFichier)
    RENVOYER Vrai
    Une autre fonction qui peut être utile :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    // Résumé : Ecrit dans un fichier les données provenant d'un tableau de classes
    // Syntaxe :
    //[ <Résultat> = ] fEcritFichier (<sNomFichier> est chaîne)
    //
    // Paramètres :
    //	sNomFichier (chaîne ANSI) : Chemin complet du fichier de destination
    // Valeur de retour :
    // 	booléen : Vrais si tout s'est bien déroulé, faux sinon
    //
    // Exemple :
    // Indiquez ici un exemple d'utilisation.
    //
    PROCÉDURE fEcritFichier(sNomFichier est une chaîne)
    nHandleFichier est un entier
    clOpérateurLu est COpérateur
     
    nHandleFichier=fOuvre(sNomFichier,foCréation+foEcriture)
     
    SI nHandleFichier=-1 ALORS
    	RENVOYER Faux
    FIN
     
    POUR TOUT clOpérateurLu DE gtabListeOpérateurs
    	fEcritLigne(nHandleFichier,clOpérateurLu.GetOpérateur())
    FIN
     
    fFerme(nHandleFichier)
    RENVOYER Vrai

  6. #6
    Membre averti
    Homme Profil pro
    loisir
    Inscrit en
    Juillet 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : loisir
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 46
    Par défaut
    Merci pour ce temps alloué a m'aider.
    J'essai de finir mon code de suppression et modification de la table et après je test ce code.
    Merci

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

Discussions similaires

  1. [XL-2010] Remplir une cellule excel a partir d'un fichier word
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/07/2013, 06h44
  2. Réponses: 4
    Dernier message: 08/06/2011, 10h39
  3. Comment remplir une table access 2003 à partir de VB6
    Par alouca dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/02/2010, 21h59
  4. Réponses: 8
    Dernier message: 02/09/2007, 22h01
  5. Réponses: 3
    Dernier message: 29/03/2006, 14h23

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