Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Hello
Voilà...
Je veux importer un fichier .txt dans une datastore. On fait pas plus concon comme fichier, il a qu'une seule ligne, le séparateur est le ";"
Sauf que mon importfile me retourne -4 comme valeur, sachant que si je remplace le ";" par une tabulation il m'importe bien mes données !
Pour info je lance ds_truc.Importfile(CSV! ,<nom complet du fichier>)
Je suis en PB 10.5.1 Build 6565
Merci d'avance pour votre aide, PB commence a me sortir par les trous de nez
Hors ligne
bonjour, (et welcome)
il me semble que pour l'importation d'un fichier txt, via la datawindow...le format de séparateur doit etre une tabulation.
Hors ligne
Merci
Alors pkoi on précise le type d'import en paramètre ?
Dans ce cas là ce n'est pas l'extension du fichier qui définit son type, mais bien celui qu'on passe en paramètre, en l'occurence CSV ici ...
Quelque chose m'échappe ....
Hors ligne
rapitou a écrit:
Merci
Alors pkoi on précise le type d'import en paramètre ?
Dans ce cas là ce n'est pas l'extension du fichier qui définit son type, mais bien celui qu'on passe en paramètre, en l'occurence CSV ici ...
Quelque chose m'échappe ....
ha d'accord...ce serait donc une nouveauté de pb10 ? ou ca existe depuis une autre version deja ?
sous pb7, j'ai pas cette option...
c'est ecrit quoi sur la description de la fonction importfile ?
sous pb7, j'ai cela...
Description
Inserts data into a DataWindow control or DataStore from a file. The data can be tab-delimited text or dBase format 2 or 3.
Hors ligne
bonjour !
je vais pas dire que je suis une experte de cette fonction des datawindows, mais je m'en sers un peu et donc je crois pouvoir te dire que les fichiers CSV doivent avoir une virgule comme séparateur et non un point virgule (c'est marqué dans l'aide, voir juste après).
Voici l'aide de pb 10 sur la méthode ImportFile d'une datawindow :
Description
Inserts data into a DataWindow control or DataStore from a file. The data can be tab-separated text, comma-separated text, XML, or dBase format 2 or 3.
en plus comma ça veut dire virgule, sinon ils auraient marqué semicolon !
voila il faut que tu changes tes points virgules en virgules (ou en tabulations)
autre chose : ton fichier doit avoir l'extension .csv si tu as des virgules dans ton fichier, sinon pour un .txt il faut des tabulations comme séparateur. sinon il ne considère pas le séparateur.
oui bon c'est pas souple mais je préfère pas chercher à comprendre c'est fait comme ça et voilà !
bonne fin de journée
Dernière modification par dauphina (29-03-2007 15:20:55)
Hors ligne
Pour Dauphina, une seule chose à dire :
Hors ligne
Bonjour,
Le problème avec les CSV, c'est que suivant la config windows, il reconnaîtra soit les ",",
soit les ";" comme séparateur (J'ai eu le problème lors de génération de fichiers en PB 7 et 9). D'où l'intérêt d'utiliser des tabulations comme séparateur: Il n'y a pas ce genre de "blagues".
Hors ligne
dauphina a écrit:
bonjour !
je vais pas dire que je suis une experte de cette fonction des datawindows, mais je m'en sers un peu et donc je crois pouvoir te dire que les fichiers CSV doivent avoir une virgule comme séparateur et non un point virgule (c'est marqué dans l'aide, voir juste après).
Voici l'aide de pb 10 sur la méthode ImportFile d'une datawindow :Description
Inserts data into a DataWindow control or DataStore from a file. The data can be tab-separated text, comma-separated text, XML, or dBase format 2 or 3.en plus comma ça veut dire virgule, sinon ils auraient marqué semicolon !
voila il faut que tu changes tes points virgules en virgules (ou en tabulations)
autre chose : ton fichier doit avoir l'extension .csv si tu as des virgules dans ton fichier, sinon pour un .txt il faut des tabulations comme séparateur. sinon il ne considère pas le séparateur.
oui bon c'est pas souple mais je préfère pas chercher à comprendre c'est fait comme ça et voilà !
bonne fin de journée
Coucou
Merci pour ta réponse complète
Effectivement j'avais noté que dans l'aide de PB un CSV est un fichier avec une virgule comme séparateur. Sauf que je ne crois pas me tromper en disant que c'est le point virgule le séparateur du CSV ... Donc je trouve ça bizarre mais bon, j'avais quand meme remplacé les ";" par des "," dans mon fichier pour voir et ça marchait pas qd meme ... Mais il est vrai que je n'ai pas tenté la combinaison "renommage de mon .txt en .csv" + " remplacement du ; en ,", y'a des chances que ça marche... Sauf que c'est pas du tout ce que je veux !
Moi j'ai un fichier CSV ( avec ; comme séparateur, car c'est quand meme ça un CSV, cette histoire de virgule je sais pas où Sybase est allé le chercher ) que je veux importer dans ma datastore ....
D'ailleurs petite parenthèse, je pense que le ; est quand pkus fiable que la tabulation comme séparateur, parce que potentiellement on peut trouver des tabulations dans des chaines de caractères ...
Enfin la conclusion de tout ça c que bibi va renommer son fichier en .CSV dans le code et faire des replace bourrins de ; en , pour faire plaisir à PB...
Ils auraient quand meme pu faire qqch de plus souple ... mais bon
Merci encore et bonne soirée
Hors ligne
Pour info ....
Pour contourner le problème des ";", j'ouvre mon fichier, je récupère ma ligne, je remplace les ";" par "," et je lance un importString .... Dans l'aide il est bien précisé que de même que pour l'importFile, la "," peut etre un séparateur ... Sauf que l'importString ne marche pas ,et quand je remplace mes "," par des "~t" ça marche trop coooooooooool !
Donc voilà je ne crois pas me tromper en disant qu'il s'agit bien là d'un bug de PB, je ne sais pas si c'est du au build ou à la version, toujours est il que je vais me faire un ptit code pour récupérer les infos de mon fichier ... trop bien !!
bonne journée à tous, et merci encore pour votre aide !
Hors ligne
Si c'est le cas, on est nous aussi:
On est en cours de migration de PB9 vers PB10.5 et notre appli
utilise pas mal des Importfile sur les CSV (J'ai vérifié ce matin: le séparateur
est bien un ";" et çà marche nickel en PB 9.0.1 build7119).
En tout cas, pour l'info.
Hors ligne
rapitou a écrit:
Sauf que je ne crois pas me tromper en disant que c'est le point virgule le séparateur du CSV ...
rapitou a écrit:
Moi j'ai un fichier CSV ( avec ; comme séparateur, car c'est quand meme ça un CSV, cette histoire de virgule je sais pas où Sybase est allé le chercher )
CSV veut dire "Comma Separated Values" ce qui se traduit en Français par "Valeurs séparées par une virgule"
(pour info Point-virgule se dit Semicolon en Anglais)
Donc c'est bien la virgule le séparateur du CSV
CQFD.
Dernière modification par rincevent (30-03-2007 10:57:05)
Hors ligne
CSV veut dire "Comma Separated Values" ce qui se traduit en Français par "Valeurs séparées par une virgule"
(pour info Point-virgule se dit Semicolon en Anglais)
j'avais dit pareil au dessus...
je trouve bizarre cette histoire de point virgule ou de virgule, personne n'est d'accord la dessus.
et c'est encore plus bizarre que sur certaines machines PB n'accepte que les points virgules pour un CSV !!!
mais je repete a rapitou que dans l'aide de la fonction importfile (ou importstring) tu dois comprendre qu'un fichier texte a pour séparateur la tabulation et pour un csv c'est une virgule.
nul part c'est marqué qu'un CSV a un point virgule ou une virgule obligatoirement par contre.
et pour ton problème de tabulation dans les chaines l'aide de PB la encore te dit que tu peux utiliser les guillemets autour de la chaine qui contient une tabulation...
donc pour PB :
- fichier avec séparateur tabulation -> TXT
- fichier avec séparateur virgule (ou point virgule selon machine) -> CSV
sinon il met pas ds les colonnes le méchant
enfin bref j'espère que tu as réussi à faire ce que tu voulais quand meme.
PS c'est marrant comme en dév informatique on veut toujours faire ce qui est pas possible... avec l'outil qu'on a
Hors ligne
petite question subsidiaire
ton pseudo, c'est par rapport à la bande à rapitou ?
Hors ligne
c'est la bande a picsou et les frere qui rapitou :D
Hors ligne
Hello
En pratique le séparateur du CSV c'est souvent le point virgule, cf http://fr.wikipedia.org/wiki/Comma-separated_values
D'autre part, le ImportString importe une chaine de caractère, on ne définit nulle part le séparateur qui peut etre virgule ou tabulation, or si c'est une virgule ça devrait fonctionner mais CA NE MARCHE PAS ! Donc je repete qu'il s'agit bien là d'un bug de PB.
Bon courage à foon, si ton appli doit passer en pb 10.5 ... remarque ça vient peut etre du build mais bon ...
Sinon oui j'ai réussi à faire ce que je voulais avec une petite fonction, et pis c'est pas plus mal d'ailleurs, ça me permet de controler les données, ce que je n'aurais pas pu faire avec un import sauvage.
Par rapport à mon pseudo, c'etait le surnom que je donnais à mon chat
Dans Picsou, ils s'appellent les Rapetou pas les Rapitou p
Bonne journée !
Hors ligne
Bon week end, je dirais meme...
je pense que le point virgule, et la virgule...vont faire débat... point barre...
Donc, c'est autant mieux que tu ais fait ton propre algorithme de controle.
Ca evite tout ambiguté.
Je pense que je vais verifier cela aussi, sur ma version de pb10.5
Hors ligne