Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 16-02-2015 08:30:03

electricpoppies@yahoo.fr  
Membre
Date d'inscription: 29-08-2013
Messages: 10
Pépites: 65
Banque: 0

importfile et charactere ";"

Bonjour a tous,

Version PB12.5

Problème : je dois faire des importfile d'un fichier csv dans une datawindow et j'ai comme séparateur ";", et PB n'aime pas trop, il préfère les tabulations.

Savez vous comment remplacer des ";" en tabulation dans un fichier , et que ce soit transparent pour l'utilisateur ? qu'il n'ait pas de manips à faire..

Merci

Hors ligne

 

#2 16-02-2015 09:51:23

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: importfile et charactere ";"

Quand j'ai eu à le faire (en PB classic mais ça doit pas trop être différent pour ton cas), je me suis fait une fonction d'import maison avec les fonction openFile, fileRead et je gérait le séparateur ";" manuellement.

Le fileOpen était en linemode, tu lis ta ligne par le fileRead, tu découpe ta ligne à chaque ";" en insérant dans les colonne successive de ta DW.

Et un petit coup de file close en fin de fonction et le tour est joué.


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#3 16-02-2015 09:54:59

electricpoppies@yahoo.fr  
Membre
Date d'inscription: 29-08-2013
Messages: 10
Pépites: 65
Banque: 0

Re: importfile et charactere ";"

ok merci, c'est bien ce qu'il me semblait devoir faire.
Mais c'était au cas ou il y ait une fonction plus "automatisée".

Hors ligne

 

#4 16-02-2015 10:00:54

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: importfile et charactere ";"

De mémoire il y avais un soucis avec cette histoire de ;
Après il y avait un autre soucis qui était le fait que l'on risquais d'avoir un nombre de colonne différent de ce que l'on attendait et l'ordre des colonnes pouvant changer ça permettait de remettre tout en ordre directement à l'import.


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#5 16-02-2015 13:22:56

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: importfile et charactere ";"

Van a écrit:

Le fileOpen était en linemode, tu lis ta ligne par le fileRead, tu découpe ta ligne à chaque ";" en insérant dans les colonne successive de ta DW.
.

Fais le plutôt en TextMode!, ça évitera de boucler sur les lignes : tu récupères tout le texte d'un coup. Un truc du genre :

Code: pb

String  ls_text
Long    ll_file

ll_file = FileOpen( "ton_fichier", TextMode! )   

If ll_file <> -1 And Not IsNull( ll_file ) Then

    FileReadEx( ll_file, ls_text )
    ls_text = gf_replace_all( ls_text, ";", "~t" )
    dw_1.ImportString( Text!, ls_text )

End If

NB : il faut juste avoir la fonction qui fait le "replace all".

EDIT : et être sûr qu'il n'y a pas de ; dans tes champs


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#6 16-02-2015 15:38:44

electricpoppies@yahoo.fr  
Membre
Date d'inscription: 29-08-2013
Messages: 10
Pépites: 65
Banque: 0

Re: importfile et charactere ";"

ok, impec merci à tous !

Hors ligne

 

#7 17-02-2015 08:42:44

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: importfile et charactere ";"

erasorz a écrit:

NB : il faut juste avoir la fonction qui fait le "replace all".

EDIT : et être sûr qu'il n'y a pas de ; dans tes champs

Pour ça si le fichier est bien contruit quand le séparateur est présnet dans une donnée il doit y avoir un encadrement par des guillemets de la donnée.
Si ça peux arriver dans ce cas il faut que tu fasse un remplace en fonction du fait que la donnée n'est pas incluse entre guillemets, ce qui te fait plus de code à écrire.

Et pour le coup avec le replace que tu propose erasorz il faut que tu sois sûr aussi qu'il n'y a pas de données contiennant du text avec des tabulations, auquel cas ça découperai en une colonne supplémentaire à tord.

Dernière modification par Van (17-02-2015 08:44:57)


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22