Pas de problème (pb), que du PowerBuilder (PB) ^^

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.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

#1 06-10-2008 14:40:03

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

[RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Bonjour à tous,

J'utilise la fonction SaveAs de PowerBuilder pour enregistrer un document au format CSV. Seulement,
comme caractères de séparation il me génère des virgules, ce qui ne m'intéresse pas, car j'ai des
numériques.

Comment puis-je paramétrer le SaveAs en format CSV sans avoir besoin de me refaire une fenêtre
SaveAs personnelle gérant un format CSV ayant comme caractère de séparation le point virgule ?

Par avance, merci.

Doctor Z.


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#2 06-10-2008 14:54:15

SEB95  
Membre Geek
Date d'inscription: 08-08-2007
Messages: 27
Pépites: 130
Banque: 0

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Bonjour,

Hé bien c'est bizare car je me pose la même question.

Hors ligne

 

#3 06-10-2008 15:24:03

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

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

il me semblait que c'était dans les options régionales de windows, mais je viens de vérifier et même en ayant point-virgule comme séparateur de liste, PB exporte avec des virgules...


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

Hors ligne

 

#4 06-10-2008 15:39:08

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

En même temps j'ai mes options régionales en anglais, et sur mon poste PB m'affiche mes messagebox() en français ;)
Je pense que PB ne se base pas uniquement sur les options régionales.

Dernière modification par Nyphel (06-10-2008 15:39:19)

Hors ligne

 

#5 06-10-2008 16:03:54

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Nyphel a écrit:

En même temps j'ai mes options régionales en anglais, et sur mon poste PB m'affiche mes messagebox() en français ;)
Je pense que PB ne se base pas uniquement sur les options régionales.

Tout à fait, c'est bien là mon problème.


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#6 06-10-2008 18:08:33

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Bonjour,

Depuis la version 10 de PB, je ne sais pas si c'est votre cas, une nouvelle méthode est disponible permettant de sauvegarder un fichier en précisant le séparateur de colonne :

Code: pb

long dwcontrol.SaveAsFormattedText ( string filename {, string encoding {, string separatorcharacter {,string quotecharacter {, string lineending {, boolean retainnewlinechar } } } } ) 

Hors ligne

 

#7 07-10-2008 07:40:17

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule



Je vais essayer ça tout de suite.
J'utilise ce type de bidouille mais c'est pas très satisfaisant

Code: pb

num = FileOpen("c:\toto.csv, LineMode!, Write!, LockWrite!, Append!)

For i = 1 to ds_csv.rowcount()
  col1 = ds_csv.object.colonne1[i]
  col2 = ds_csv.object.colonne2[i]
  col3 = ds_csv.object.colonne3[i]
  
  chaine = col1+";"+col2+";"+col3
    
  filewrite(num,chaine)
Next

fileclose(num)


Message de modération: Merci d'utiliser la balise code=pb, et non code:pb

Dernière modification par nico (07-10-2008 12:02:15)

Hors ligne

 

#8 07-10-2008 08:08:12

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Code: pb

dw_pbadonf.SaveAsAscii("D:\RESULTS.TXT",";","'")

Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#9 07-10-2008 09:02:13

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

pick ouic a écrit:

Code: pb

dw_pbadonf.SaveAsAscii("D:\RESULTS.TXT",";","'")

Bonjour,

Je ne connaissais pas cette instruction. Cependant, en faisant comme cela, est-ce que l'on aura la
fenêtre Windows (comme avec le SaveAs) permettant d'indiquer le chemin et le type de fichier, en
l'occurrence CSV ?

Merci.

Doctor Z.


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#10 07-10-2008 09:28:30

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Doctor Z a écrit:

Je ne connaissais pas cette instruction. Cependant, en faisant comme cela, est-ce que l'on aura la
fenêtre Windows (comme avec le SaveAs) permettant d'indiquer le chemin et le type de fichier, en
l'occurrence CSV ?

Non, le SaveAsAscii nécessite obligatoirement un chemin d'accès de fichier valide en paramètre. Tu n'auras pas la possibilité d'afficher la fenêtre window comme cela. De même, le fichier sauvegardé sera de type texte avec comme séparateur un ";" (il ne me semble pas que les fichiers d'extension .CSV soient autorisés avec cette méthode, mais c'est à tester).
Ceci n'est cependant pas forcément gênant (Un import dans Excel du fichier généré se fera sans problème par exemple).
Pour faire apparaître la fenêtre de sélection de l'emplacement du fichier, il te faudra coder cet appel toi-même, et récupérer le chemin dans une variable de type string que tu pourras passer en paramètre à la méthode "SaveAsAscii".


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#11 07-10-2008 09:51:08

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

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

oui il te suffira de coder d'abord un GetFileSaveName pour que l'utilisateur choisisse le chemin et le nom de fichier


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

Hors ligne

 

#12 07-10-2008 10:27:16

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Merci pour vos réponses.

C'est tout de même dommage que dans PB, il n'y ait pas la possibilité de choisir le caractère de
séparation pour un format CSV et dommage, je suis en PB9, je ne peux donc pas utiliser le
SaveAsFormatedText proposé par Buck.

Juste un apparté: nico, tu peux optimiser ton code, car tu réévalues à chaque fois ds_csv.rowcount(),
en faisant cela, ton code est plus optimisé :

Code: pb

ll_rowcount = ds_csv.rowcount()
For i = 1 to ll_rowcount
...

http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#13 07-10-2008 12:05:13

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

à toi Doctor Z

Hors ligne

 

#14 17-10-2008 15:45:44

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Bonjour à tous,

Pour info je suis sur PowerBuilder 9.

En complément de ce sujet j'ai plusieurs questions.

1° Comment récupérer le chemin sélectionner par l'utilisateur lorsque l'on utilise le SaveAs ? Par une
API ? Par une méthode PB ? Dans la base de registre ? Autre ?

2° Comment faire pour avoir l'explorateur de Windows dans une datawindow ? J'ai regardé du côté
des OLE mais je n'ai rien trouvé. Quelqu'un a-t-il une idée ?

Par avance, merci.

Doctor Z.


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#15 17-10-2008 16:17:12

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

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

erasorz a écrit:

oui il te suffira de coder d'abord un GetFileSaveName pour que l'utilisateur choisisse le chemin et le nom de fichier


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

Hors ligne

 

#16 20-10-2008 07:37:40

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Code: pb

String ls_path, ls_file

//L'utilisateur choisi le nom et chemin du fichier .csv
GetFileSaveName("Sauvegarde du fichier Pro",ls_path,ls_file,"csv","CSV (*.csv),*.csv")
  
FileDelete(ls_path) 

dw_pbadonf.SaveAsAscii(ls_path,";","'")

Hors ligne

 

#17 20-10-2008 08:03:19

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

nico a écrit:

Code: pb

String ls_path, ls_file

//L'utilisateur choisi le nom et chemin du fichier .csv
GetFileSaveName("Sauvegarde du fichier Pro",ls_path,ls_file,"csv","CSV (*.csv),*.csv")
  
FileDelete(ls_path) 

dw_pbadonf.SaveAsAscii(ls_path,";","'")

Bonjour à tous,

Autant pour moi, j'ai lu trop rapidement vos réponses

Effectivement, le GetFileSaveName m'apporte ce dont j'ai besoin, cependant, je ne voudrai pas
limiter les extensions de fichier à la seule CSV. L'utilisateur doit pouvoir choisir toute une panoplie
d'extension et si effectivement il choisi le CSV, je dois le traiter pour remplacer le caractère de
séparation.

C'est pour cela aussi que je posai les questions de mon précédent poste.

Je continue de chercher et de tester, si je trouve quelque chose je vous en ferai part.

PS1 : Je n'utilise pas non plus les PFC ni aucun framework.

PS2 : J'imagine bien que le nom et le répertoire du fichier enregistrer qu'il soit CSV ou autre, est
stocké quelque part dans la base de registre, simplement je n'ai pas accès que je n'en ai pas les
droits

Merci.

Doctor Z.


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#18 20-10-2008 10:39:36

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Après quelques recherche, j'ai trouvé 2 trucs intéressants : le GetCurrentDirectory () et la fonction
GetModuleFileName de l'API Windows.

Le GetCurrentDirectory () ne me donne que le répertoire de sauvegarde, qui plus est, il peut varier
durant l'ouverture de l'application et n'est donc pas très fiable. Il se pourrait que mon salut vienne de
l'utilisation de GetModuleFileName car il me permet de tout récupérer, le problème est que je dois
compiler mon appli pour qu'il fonctionne correctement, le cas échéant, il me retourne le répertoire où
se trouve PB installé, c'est un peu contraignant, mais il me semble que je n'ai pas trop le choix.

Question complémentaire : comment faire pour, dans une datawindow avoir un explorateur Windows ?

Par avance, merci.


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#19 20-10-2008 13:52:38

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Personne ne peux me donner un petit coup de main pour la petite question supplémentaire ?


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#20 20-10-2008 14:43:40

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

J'ai développé cette petite fenêtre pour sélectionner un répertoire dans mon application :

http://bucaille.chez-alice.fr/pbadonf/explorateur.jpg

Est-ce type de fonctionnalités que tu recherches ? si oui, je peux éventuellement mettre le code à disposition.

Hors ligne

 

#21 20-10-2008 15:01:34

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

buck a écrit:

J'ai développé cette petite fenêtre pour sélectionner un répertoire dans mon application :

[img align=L]http://bucaille.chez-alice.fr/pbadonf/explorateur.jpg[/url]

Est-ce type de fonctionnalités que tu recherches ? si oui, je peux éventuellement mettre le code à disposition.

Merci pour ta réponse, mais je ne peux pas visualiser la fenêtre en question et toutes les pistes que
je puisse avoir m'intéresse car je suis coincé au niveau du SaveAs pour lequel mon appli doit ouvrir
la fenêtre de sauvegarde et proposer un certain nombre d'extenseion (pas comme le GetFileSaveName).

Quand au GetModuleFileName après analyse, il ne me permet de récupérer que le répertoire d'installation
de l'appli, ce qui ne m'intéresse pas ici.

Merci.


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#22 20-10-2008 15:41:51

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Bonjour,

La fonction GetFileSaveName supporte parfaitement plusieurs extensions :

Code: pb

GetFileSaveName ( "Select File", ls_path, ls_file, "GIF",  "GIF (*.gif), *.gif, JPEG (*.jpg), *.jpg" , "C:\My Documents",  32770)


Dans l'option filter (5 ème paramètres optionnels de GetFileSaveName) , il suffit d'ajouter autant d'extension que l'on souhaite en respectant la syntaxe ci-dessus.

Hors ligne

 

#23 20-10-2008 15:52:43

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

buck a écrit:

Bonjour,

La fonction GetFileSaveName supporte parfaitement plusieurs extensions :

Code: pb

GetFileSaveName ( "Select File", ls_path, ls_file, "GIF",  "GIF (*.gif), *.gif, JPEG (*.jpg), *.jpg" , "C:\My Documents",  32770)


Dans l'option filter (5 ème paramètres optionnels de GetFileSaveName) , il suffit d'ajouter autant d'extension que l'on souhaite en respectant la syntaxe ci-dessus.

Bonjour,

buck, je ne connais pas à l'avance ls_path et ls_file, c'est l'utilisateur qui va les choisir par le biais de
la boîte de dialogue et c'est bien là mon problème.
Pour l'histoire des extensions, la question est
entendu, merci.

OK, ça fonctionne, maintenant cette méthode fonctionne-t-elle avec les datawindows ? Je n'en ai pas
l'impression ...


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 

#24 20-10-2008 16:05:37

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Doctor Z a écrit:

...buck, je ne connais pas à l'avance ls_path et ls_file, c'est l'utilisateur qui va les choisir par le biais de la boîte de dialogue et c'est bien là mon problème...

C'est toujours le cas quand on utilise GetFileSaveName
Doctor, je viens de tout relire, pourtant je ne comprends pas quel est ton problème.


never let people work on more than one thing at once.

Hors ligne

 

#25 20-10-2008 16:16:53

Doctor Z  
Moderador
Award: PanchoeNacho
Lieu: Vale Figueira (Lisbonne)
Date d'inscription: 30-05-2006
Messages: 756
Pépites: 1,003,082
Banque: 877,135,234,297,804

Re: [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

shahin a écrit:

Doctor Z a écrit:

...buck, je ne connais pas à l'avance ls_path et ls_file, c'est l'utilisateur qui va les choisir par le biais de la boîte de dialogue et c'est bien là mon problème...

C'est toujours le cas quand on utilise GetFileSaveName
Doctor, je viens de tout relire, pourtant je ne comprends pas quel est ton problème.

Résumons.

- j'ai une datawindow
- je dois pouvoir sauvegarder celle-ci dans plusieurs formats, y compris le CSV
- si je l'enregistre en CSV, je veux pouvoir modifier le caractère séparateur (par le biais du SaveAsAscii
ça fonctionne bien)
- le SaveAs ne me permet pas de récupérer le chemin et le nom de fichier choisi par l'utilisateur
- le GetFileSaveName (sauf erreur de ma part) ne permet pas de travailler avec une datawindow, mais
me permet de récupérer le chemin et le nom du fichier

Comment puis-je faire ? Il me faudrait un mélange de SaveAs () et de GetFileSaveName ().


http://www.userbars.com/i/543606.gif
Olivença, l'oubliée
Si tu es alentejane, que Dieu te bénisses, si tu ne l'es pas, que Dieu te pardonnes.

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Enregistrer en CSV avec comme caractère de séparation le point virgule

Pied de page des forums

Propulsé par FluxBB 1.2.22