PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → HFSQL avec un .txt
HFSQL avec un .txt
Débuté par Awery, 28 fév. 2012 11:26 - 5 réponses
Membre enregistré
31 messages
Posté le 28 février 2012 - 11:26
Mise à jours de ma base HFSQL avec un .txt

J'ai trouver ce bout de code
// Lecture de la première ligne du fichier
LigneLue = fLitLigne(NumFic)
// Affichage de la première ligne dans la table
TableAjouteLigne("",ExtraitChaîne(LigneLue,1,", "),ExtraitChaîne(LigneLue,2,", "),ExtraitChaîne(LigneLue,3,", "))
// TableAjouteLigne("",LigneLue) // PAREIL que ligne précédente!
// Autres lignes à lire ? Erreur de lecture ?
TANTQUE LigneLue <> EOT ET LigneLue <> "" // Lecture des lignes suivantes du fichier
LigneLue = fLitLigne(NumFic)
// Affichage des lignes suivantes dans la table
TableAjouteLigne("",ExtraitChaîne(LigneLue,1,", "),ExtraitChaîne(LigneLue,2,", "),ExtraitChaîne(LigneLue,3,", "))
// TableAjouteLigne("",LigneLue) // PAREIL que ligne précédente!
FIN
// Affichage du message d'erreur si la lecture n'a pas été effectuée
SI LigneLue = "" ALORS Erreur(ErreurInfo(errMessage))
// Fermeture du fichier
fFerme(NumFic)


moi mes séparateur sont des ";" mais ce code ne marche pas. Il faut que je rajoute fOuvre et fLit.

Je ne sais pas ou chercher

--
Merci de votre message
Membre enregistré
31 messages
Posté le 28 février 2012 - 12:54
alors j'ai refaçonner ce code avec un autre bout de code

//déclaration des variables
Fichier est un entier
Lecture est une chaîne
nFicherNbLigne est un entier
nCompteur_de_ligne est un entier
Tableau_fichier est un tableau de 1 par 1 chaîne
i est un entier


//on supprime les fichiers
fSupprime(fRepExe()+"\Arcticle.FIC")
fSupprime(fRepExe()+"\Arcticle.ndx")
fSupprime(fRepExe()+"\CLIENT.FIC")
fSupprime(fRepExe()+"\CLIENT.ndx")
fSupprime(fRepExe()+"\Statistiques.FIC")
fSupprime(fRepExe()+"\Statistiques.ndx")

//ouverture des fichier
Fichier = fOuvre(fRepExe()+"\CLIENT.txt",foLectureEcriture)
//avec lecture et écriture
Lecture = fLit(Fichier, 600000)
//on lit 600000 octet que lon stoque dans Lecture
fFerme(Fichier)
//on ferme le fichier
POUR TOUT CHAINE sFicierNbLigne DE Lecture SEPAREE PAR RC
//pour les nombres de ligne de lectuer
nCompteur_de_ligne ++//on va connêtre le nombre de ligne
//on incrémente le comteur
FIN

TableauSupprimeTout(tabTableau_fichier)
//on initialise le tableau
Tabeau_fichier = allouer un tabeau de Compteur_de_ligne par 19 chaînes
//on alloue un tableau de n ligne et 19 colone
ChaîneVersTableau(Lecture, Tableau_Fichier,RC,";" )
//on sépare les colone par ;

POUR i = 1 A (compteur_de_ligne - 1)
TableAjoute(CLIENT, Tableau_Fichier[i,1], Tableau_Fichier[i,2], Tableau_Fichier[i,3], Tableau_Fichier[i,4], Tableau_Fichier[i,5], Tableau_Fichier[i,6])
Tableau_Fichier[i,7], Tableau_Fichier[i,8], Tableau_Fichier[i,9], Tableau_Fichier[i,10], Tableau_Fichier[i,11], Tableau_Fichier[i,12], Tableau_Fichier[i,13],
Tableau_Fichier[i,14], Tableau_Fichier[i,15], Tableau_Fichier[i,16], Tableau_Fichier[i,17], Tableau_Fichier[i,18], Tableau_Fichier[i,19])
//on remplie le tableau
FIN


mais j'ai un problème de syntaxe a la ligne
Tabeau_fichier = allouer un tabeau de Compteur_de_ligne par 19 chaînes


Quelqu'un sait ?

--
Merci de votre message
Posté le 28 février 2012 - 13:33
Bonjour.
Pour utiliser les allocations, il faut obligatoirement avoir une variable dynamique, sinon, elle est allouée à la création. ( Du moins, je l'ai toujours supposé )
Toutefois, il serait peut être plus simple, étant donné que tu fait déjà un parcours sur toutes les lignes, de faire l'ajout dans la foulée...
tableau est un tableau de chaînes
POUR TOUT CHAINE sLigne DE Lecture SEPAREE PAR RC
ChaîneVersTableau( sLigne, tableau, ";" )
//Et là, on fait l'ajout dans le fichier.
//D'ailleurs, je ne comprends pas bien le coup du TableAjoute pour de l'HF. Il serait peut être mieux d'avoir un HAjoute.
FIN

Sinon, pour utiliser le tableau dynamique :
Tableau_fichier est un tableau dynamique
Tableau_fichier = allouer un tableau dynamique de Compteur_de_ligne par 19 chaînes

Cela étant, dans la doc de la fonction ChaineVersTableau, il est précisé que pour les types simples, les augmentations de nombre de colonnes / lignes étaient réalisées automatiquement. On peut donc avoir :
Tableau_fichier est un tableau de 0 par 0 chaînes
ChaîneVersTableau( Tableau_fichier, Lecture, RC, ";" )


Bonne journée.

Awery a écrit dans le message de news <9526c2f11ad87a6ae82e29f710aff195@news.pcsoft> :
mais j'ai un problème de syntaxe a la ligne
Tabeau_fichier = allouer un tabeau de Compteur_de_ligne par 19 chaînes


Quelqu'un sait ?

--
Merci de votre message
Membre enregistré
31 messages
Posté le 28 février 2012 - 16:24
du coup ma syntaxe est fausse non ?
POUR i = 1 A (Compteur_de_ligne - 1)
HAjoute(CLIENT,Tableau_fichier[i,1],Tableau_fichier[i,2], Tableau_fichier[i,3],Tableau_fichier[i,4],Tableau_fichier[i,5],Tableau_fichier[i,6],Tableau_fichier[i,7],Tableau_fichier[i,8],Tableau_fichier[i,9], Tableau_fichier[i,10], Tableau_fichier[i,11], Tableau_fichier[i,12], Tableau_fichier[i,13],
Tableau_fichier[i,14], Tableau_fichier[i,15], Tableau_fichier[i,16], Tableau_fichier[i,17], Tableau_fichier[i,18], Tableau_fichier[i,19])
//on remplie le tableau
FIN


--
Merci de votre message
Membre enregistré
31 messages
Posté le 28 février 2012 - 17:15
POUR i = 1 A (Compteur_de_ligne - 1)
CLIENT.Nom_dappel = Tableau_fichier[i,1]
CLIENT.Raison_sociale = Tableau_fichier[i,2]
CLIENT.Adresse_1 = Tableau_fichier[i,3]
CLIENT.Adresse_2 = Tableau_fichier[i,4]
CLIENT.Adresse_3 = Tableau_fichier[i,5]
CLIENT.Code_postal = Tableau_fichier[i,6]
CLIENT.Ville = Tableau_fichier[i,7]
CLIENT.Interlocuteur = Tableau_fichier[i,8]
CLIENT.Téléphone = Tableau_fichier[i,9]
CLIENT.Fax = Tableau_fichier[i,10]
CLIENT.Code_Famille = Tableau_fichier[i,11]
CLIENT.CA_N = Tableau_fichier[i,12]
CLIENT.CA_N1 = Tableau_fichier[i,13]
CLIENT.CA_N2 = Tableau_fichier[i,14]
CLIENT.Commentaire = Tableau_fichier[i,15]
CLIENT.Mail = Tableau_fichier[i,16]
CLIENT.Portable = Tableau_fichier[i,17]
HAjoute(CLIENT)
//on remplie le tableau
FIN


Je remplis mon tableau comme ceci

--
Merci de votre message
Membre enregistré
31 messages
Posté le 28 février 2012 - 17:31
[Résolue]
//déclaration des variables
Fichier est un entier
Lecture est une chaîne
Compteur_de_ligne est un entier
Tableau_fichier est un tableau dynamique
i est un entier


//on supprime les fichiers
fSupprime(fRepExe()+"\Arcticle.FIC")
fSupprime(fRepExe()+"\Arcticle.ndx")
fSupprime(fRepExe()+"\CLIENT.FIC")
fSupprime(fRepExe()+"\CLIENT.ndx")
fSupprime(fRepExe()+"\Statistiques.FIC")
fSupprime(fRepExe()+"\Statistiques.ndx")

//ouverture des fichier
Fichier = fOuvre(fRepExe()+"\CLIENT.txt",foLectureEcriture)
//avec lecture et écriture
Lecture = fLit(Fichier, 600000)
//on lit 600000 octet que lon stoque dans Lecture
fFerme(Fichier)
//on ferme le fichier
POUR TOUT CHAINE sFicierNbLigne DE Lecture SEPAREE PAR RC
//pour les nombres de ligne de lectuer
Compteur_de_ligne ++//on va connêtre le nombre de ligne
//on incrémente le comteur
FIN

//TableauSupprimeTout(Tableau_fichier)
//on initialise le tableau
Tableau_fichier = allouer un tableau dynamique de Compteur_de_ligne par 17 chaînes
//on alloue un tableau de n ligne et 19 colone
ChaîneVersTableau(Lecture, Tableau_fichier,RC,";" )
//on sépare les colone par ;

POUR i = 1 A (Compteur_de_ligne - 1)
CLIENT.Nom_dappel = Tableau_fichier[i,1]
CLIENT.Raison_sociale = Tableau_fichier[i,2]
CLIENT.Adresse_1 = Tableau_fichier[i,3]
CLIENT.Adresse_2 = Tableau_fichier[i,4]
CLIENT.Adresse_3 = Tableau_fichier[i,5]
CLIENT.Code_postal = Tableau_fichier[i,6]
CLIENT.Ville = Tableau_fichier[i,7]
CLIENT.Interlocuteur = Tableau_fichier[i,8]
CLIENT.Téléphone = Tableau_fichier[i,9]
CLIENT.Fax = Tableau_fichier[i,10]
CLIENT.Code_Famille = Tableau_fichier[i,11]
CLIENT.CA_N = Tableau_fichier[i,12]
CLIENT.CA_N1 = Tableau_fichier[i,13]
CLIENT.CA_N2 = Tableau_fichier[i,14]
CLIENT.Commentaire = Tableau_fichier[i,15]
CLIENT.Mail = Tableau_fichier[i,16]
CLIENT.Portable = Tableau_fichier[i,17]
HAjoute(CLIENT)
//on remplie le tableau
FIN


--
Merci de votre message