Forums développeurs windev
[Windev 7.5] Créer tableau dans fichier texte - Version imprimable

+- Forums développeurs windev (http://tunidev.net)
+-- Forum : Forums Développeurs WINDEV (http://tunidev.net/Forum-Forums-D%C3%A9veloppeurs-WINDEV)
+--- Forum : Forum Windev 7.5 & 5.5 (http://tunidev.net/Forum-Forum-Windev-7-5-5-5)
+--- Sujet : [Windev 7.5] Créer tableau dans fichier texte (/Thread-Windev-7-5-Cr%C3%83%C2%A9er-tableau-dans-fichier-texte)



Créer tableau dans fichier texte - Pemco - 30-01-2012

je veux creer un tableau dans fichier texte en windev comment faire


Re: Créer tableau dans fichier texte - Samifred - 30-01-2012

Question incompréhensible... revoir la question avec plus d'explications...

Un fichier TXT vers un fichier HF ou le contraire ?

Ne pas confondre une table avec un fichier, en Windev une table est un champ et non un fichier. Le fichier est une base de données HF dont le contenu est affiché dans une table.


Re: Créer tableau dans fichier texte - Pemco - 30-01-2012

j'ai programmé un état dont les données sont enregistrées dans un fichier texte.
Designation Quantité montant
Batterie c25 12 2500
Batterie Nokia 03 10000
Mon problème est que les données se déplacent dans le fichier texte a chaque fois que le libellé de la designation est long.
Que faire?


Re: Créer tableau dans fichier texte - Samifred - 30-01-2012

Mon problème est que les données se déplacent dans le fichier texte a chaque fois que le libellé de la designation est long.

A la saisie, c'est un simple champ texte ou un mémo texte qui est sauvé ?... y a-t-il des RC ?


Re: Créer tableau dans fichier texte - Pemco - 30-01-2012

c'est un champ texte plus des rc


Re: Créer tableau dans fichier texte - Samifred - 30-01-2012

Bon si tu veux sauver une ligne en tableau... (comme j'ai +/- compris), tu fais des colonnes séparées par des point-virgules.

Exemple, ligne de texte tableau à sauver: LigneTexte = "Colonne1;Colonne2;colonne3;colonne4;colonne5;"
fEcritLigne(LigneTexte)+RC

Pour relire il faut utiliser la fonction ExtraitChaine() ou les point-virgules servent de sépararteur de colonne.
LigneTexte = fLitLigne(..... )

Colonne1 = ExtraitChaine(LigneTexte,1,";")
Colonne2 = ExtraitChaine(LigneTexte,2,";")
...

C'est ça que tu veux ?

Voilà un exemple réel d'une procédure d'enregistrement d'une table vers un fichier txt crypté:
Code :
PROCEDURE SauveDocument()
// Déclaration des variables
sNomCheminFichier, sLigneLue sont des chaînes
nIdFichier, nResFermeFichier, i, n sont des entiers
bResEcriture est un booléen

// Sélection d'un fichier
SI gsMémoNomFichier = "" ALORS
        sNomCheminFichier = fSélecteur(gsRépertoirEnCours, "", ...
        "Sélectionner un fichier",...
        "Fichier facture (*.FAC)"+TAB+"*.fac"+RC+...
        "Fichier devis (*.DEV)"+TAB+"*.dev"+RC+...
        "Tous (*.*)"+TAB+"*.*","",fselCrée)
    SINON
        sNomCheminFichier = gsMémoNomFichier
FIN

// Création du fichier
nIdFichier = fCrée(sNomCheminFichier,foEcriture)
SI nIdFichier <> -1 ALORS
    // Écriture de l'entête document
    POUR i = 1 A 7
        bResEcriture = fEcritLigne(nIdFichier, Crypte({"SAI_Doc"+i},gsMotdepasse,crypteSécurisé))
        SI bResEcriture = Faux ALORS
            Erreur(ErreurInfo(errMessage))
            RETOUR
        FIN
    FIN
    // Nombre de ligne ajoutée        
    bResEcriture = fEcritLigne(nIdFichier, gnNbrLigne)
    SI bResEcriture = Faux ALORS
        Erreur(ErreurInfo(errMessage))
        RETOUR
    FIN
    // Ecriture du contenu document
    POUR i = 1 A gnNbrLigne
        sLigneLue = i+"|"+TABLE_Contenu[i][2]+"|"+TABLE_Contenu[i][3]+"|"+TABLE_Contenu[i][4]+"|"+...
                    TABLE_Contenu[i][5]+"|"+TABLE_Contenu[i][6]+"|"+TABLE_Contenu[i][7]+"|"+TABLE_Contenu[i][8]+"|"
        bResEcriture = fEcritLigne(nIdFichier, Crypte(sLigneLue,gsMotdepasse,crypteSécurisé))
        SI bResEcriture = Faux ALORS
            Erreur(ErreurInfo(errMessage))
            RETOUR
        FIN
    FIN
FIN
// Mémorise répertoir
gsRépertoirEnCours = sNomCheminFichier
// Sauvegarde si nouveau numéro de documemt
SauveNumero()
// On a rien frapper
gbFrappe = Faux

Et voilà le code de lecture pour remplir la table...
Code :
PROCEDURE OuvrirDocument()
// Déclaration des variables
sNomCheminFichier, sLigneLue sont des chaînes
nIdFichier,  nResFermeFichier, i, n sont des entiers

// On ferme le document actuel si existant
FermerDocument()

// Initialisation de la table de saisie des lignes document
POUR i = 1 A 200
    TableAjouteLigne(TABLE_Contenu)
FIN

// Remplissage de la combo Client
ListeSupprimeTout(SAI_Doc4)
POUR TOUT Clients SUR Nom
    ListeAjoute(SAI_Doc4,Clients.Nom + " " + Clients.Prénom + gLien(Clients.IDClients))
FIN

// Sélection d'un fichier
sNomCheminFichier = fSélecteur(gsRépertoirEnCours, "", ...
"Sélectionner un fichier",...
"Fichier devis (*.DEV)"+TAB+"*.dev"+RC+...
"Fichier facture (*.FAC)"+TAB+"*.fac"+RC+...
"Tous (*.*)"+TAB+"*.*","")
// Si on annule l'ouverture
SI sNomCheminFichier = "" ALORS RETOUR

// Ouverture du fichier
nIdFichier = fOuvre(sNomCheminFichier)
// Affichage du message d'erreur si l'ouverture n'a pas été effectuée
SI nIdFichier = -1 ALORS
    Erreur(ErreurInfo(errMessage))
SINON
    // Lecture des premières lignes du fichier
    POUR i = 1 A 7
        sLigneLue = fLitLigne(nIdFichier)
        {"SAI_Doc"+i} = Décrypte(sLigneLue,gsMotdepasse,crypteSécurisé)
        // On affiche l'adresse du client
        SI i = 6 ALORS ExécuteTraitement(SAI_Doc4,trtSélection)
    FIN
    // Lecture du nombre de ligne dans la table
    sLigneLue = fLitLigne(nIdFichier)
    n = Val(sLigneLue)
    // Autres lignes à lire ? Erreur de lecture ?
    POUR i = 1 A n
        // Lecture des lignes suivantes du fichier
        sLigneLue = fLitLigne(nIdFichier)
        // Affichage des lignes suivantes dans la table mémoire
        sLigneLue = Décrypte(sLigneLue,gsMotdepasse,crypteSécurisé)
        // Composition d'une ligne
        TableModifieLigne(TABLE_Contenu,i,...
                          ExtraitChaîne(sLigneLue,1,"|"),...
                          ExtraitChaîne(sLigneLue,2,"|"),...                
                          ExtraitChaîne(sLigneLue,3,"|"),...    
                          ExtraitChaîne(sLigneLue,4,"|"),...
                          ExtraitChaîne(sLigneLue,5,"|"),...
                          ExtraitChaîne(sLigneLue,6,"|"),...
                          ExtraitChaîne(sLigneLue,7,"|"),...
                          ExtraitChaîne(sLigneLue,8,"|"))
    FIN
    // Affichage du message d'erreur si la lecture n'a pas été effectuée
    SI sLigneLue = "" ALORS Erreur(ErreurInfo(errMessage))
    // Fermeture du fichier
    nResFermeFichier = fFerme(nIdFichier)
    SI nResFermeFichier = -1 ALORS
        // Affichage du message d'erreur si la fermeture n'a pas été effectuée
        Erreur(ErreurInfo(errMessage))
    FIN
FIN
// Mémorise le Nom et chemin du fichier
gsRépertoirEnCours = sNomCheminFichier
gsMémoNomFichier = sNomCheminFichier
// Affiche le titre
TitreEnCours("Gestion de facturation ["+ExtraitChaîne(gsMémoNomFichier,1,"\",DepuisFin)+"]")
// Affiche le nombre de ligne utilisée
CalculLigne()
// On a rien saisi
gbFrappe = Faux
// On se place su le premier plan
FEN_CreerDocument..Plan = 1
// On rend le menu Document actif
GriseMenu(FEN_CreerDocument..Plan)
// On donne la main à la table
DonneFocus(TABLE_Contenu)