|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Importer un fichier txt avec sélection colonne |
Débuté par guest, 30 jan. 2006 23:28 - 7 réponses |
| |
| | | |
|
| |
Posté le 30 janvier 2006 - 23:28 |
Salut tout le monde,
Je cherche à importer un fichier txt avec un reclasser des colonnes. C'est peut-être pas très claire, mais voiçi un exemple :
Fichier txt (séparateur ";") : produit.txt gencode;référence;désignation;PU;quantité
Ma Table gencode|désignation|référence|quantité|PU
Il y a un changement de position des colonnes de ma table. Je précise que je ne peux pas changer les positions de ma table. Je précise que je sais importer les données. Mais les reclasser, c'est un autre problème !
Comment faire pour reclasser les imports lors de l'importation ?
Merci de votre aide. |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 07:21 |
Bonjour Splitter(extraire) votre fichier txt ds un tableau de structure (dynamique) et l importer selon l ordre desiré ds votre table me semble une solution adequate ...
Cordialement
Nicolas Jaillet |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 07:22 |
Christophe avait soumis l'idée :
Salut tout le monde,
Je cherche à importer un fichier txt avec un reclasser des colonnes. C'est peut-être pas très claire, mais voiçi un exemple :
Fichier txt (séparateur ";") : produit.txt gencode;référence;désignation;PU;quantité
Ma Table gencode|désignation|référence|quantité|PU
Il y a un changement de position des colonnes de ma table. Je précise que je ne peux pas changer les positions de ma table. Je précise que je sais importer les données. Mais les reclasser, c'est un autre problème !
Comment faire pour reclasser les imports lors de l'importation ?
Merci de votre aide. Bonsoir, une idée comme cela, toute bete et sans programme compliqué !: tu importe ton fichier .txt dans excel, tu changes tes colonnes, tu l'exporte en .txt et tu le reimporte... ça devrait le faire !
@+++
-- [Bernard Vessiot] 34980 Saint Gély du Fesc |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 08:36 |
Bonjour, J'ai eut le même dans une application, pour importer des codes barres venant de nos fournisseurs. Comme chacun formate son fichier comme il l'entend, je ne pouvais pas me baser sur un format type. Donc voici ce que j'ai fait: 1. J'importe le fichier dans une table construite dynamiquement ( champclone pour ajouter des colonnes). Les colonnes dynamiques ont pour nom Col1..Coln. Pour connaitre le nombre de colonnes, il suffit de compter les séparateurs dans la première ligne du fichier. 2. Je demande à l'utilisateur dans quelle colonne se trouve la référence fournisseur, le code barre... 3. Avec des indirection, je peux traiter les données
Frédéric. |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 18:31 |
Merci c'est sympa pour vos aides.
1- la solution de mettre dans xls, etc... me semble assez lourd, car c'est une manipulation régulière. 2- La solution d'une table dynamique ? c'est quoi ?
Si vous avez une meilleure explication ou un morceau de code, celà m'arrangerait.
Cordialement, |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 21:32 |
Merci c'est sympa pour vos aides.
1- la solution de mettre dans xls, etc... me semble assez lourd, car c'est une manipulation régulière. 2- La solution d'une table dynamique ? c'est quoi ?
Si vous avez une meilleure explication ou un morceau de code, celà m'arrangerait.
Cordialement, |
| |
| |
| | | |
|
| | |
| |
Posté le 02 février 2006 - 10:28 |
Dans ma fenêtre d'import: J'ai une table mémoire avec 2 colonnes: une pour le numéro de ligne, et une cachée qui me sert de "modèle". Ensuite, pour le chargement du fichier: IdFichier est un entier CompteurColonne est un entier CompteurLigne est un entier Ligne est une chaîne NomCol est une chaîne NbrLig est un entier NbrCol est un entier
// Je vérifie si le fichier demandé existe SI PAS fFichierExiste(NomFic) ALORS Info(ChaîneConstruit("Le fichier %1 n'existe pas",NomFic)) RepriseSaisie(NomFic) FIN
// Je vérifie l'extension du fichier SI Majuscule(fExtraitChemin(NomFic,fExtension)) <> ".TXT" ALORS Info("Seuls les fichiers texte peuvent être utilisés") RepriseSaisie(NomFic) FIN
Sablier(Vrai)
// Je vide la table TableSupprimeTout(TableSource)
IdFichier = fOuvre(NomFic) SI IdFichier = -1 ALORS Info(ErreurInfo(errMessage)) RepriseSaisie(NomFic) FIN Ligne = fLitLigne(IdFichier) NbrCol = ChaîneOccurrence(Ligne,TAB) + 1
// Mise en place de la table POUR CompteurColonne = 1 A NbrCol // J'ajoute la colonne si besoin SI PAS ChampExiste("tablesource.colonne" + CompteurColonne) ALORS ChampClone("tablesource.colonne1","colonne" + CompteurColonne) FIN {"tablesource.colonne" + CompteurColonne}..Titre = CompteurColonne {"tablesource.colonne" + CompteurColonne}..Visible = Vrai FIN
TANTQUE Ligne <> EOT // Je n'ajoute que les lignes non vides SI Remplace(Remplace(Ligne," ",""),TAB,"") <> "" ALORS NbrLig++ TableAjoute(TableSource,Remplace(NbrLig + TAB + Ligne,TAB + " ",TAB)) FIN Ligne = fLitLigne(IdFichier) FIN
fFerme(IdFichier) Sablier(Faux) TableAjuste(TableSource) TableSource..AffichageActif = Vrai
Lorsque le fichier est chargé, je demande à l'utilisateur quelle donnée se trouve dans quelle colonne, avec des champs de saisie. En utilisant les indirection, je peux de la sorte retrouver les données: Par exemple, pour retrouver un code barre dans la table: NewCodeBarre = SansEspace({"TableSource.colonne" + CodeBarre}[NumLig]) CodeBarre est le champ de saisie dans leque est saisi le numéro de colonne contenant le code barre.
Frédéric. |
| |
| |
| | | |
|
| | |
| |
Posté le 02 février 2006 - 17:16 |
Merci pour tout ! Je penses qu'avec tout ça je devrais pouvoir faire quelque chose. Encore merci. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|