Powerbuilder pour les completement Geeks !

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 29-08-2007 10:53:37

cdtit  
Membre completement Geek
Lieu: Saint chéron
Date d'inscription: 19-12-2006
Messages: 124
Pépites: 678
Banque: 0

[RESOLU] Copier un fichier texte

Bonjour,

Je cherche s'il existe une fonction PB 6.5, permettant de copier un fichier (texte),
qui ne soit pas visible par les utilisateurs et sans utiliser une fonction Windows.
Mon environnement étant hétérogène au niveau des SI et ayant des gros soucis de réseau,
j'ai besoin de rapatrier en local, de façon temporaire, un fichier de données.
J'ai bien trouvé les différentes fonctions FileExists(), FileDelete() mais pas de quoi copier le fichier
sans passer par SaveAs

En vous souhaitant une bonne rentrée, merci.


Les cons ça ose tout. C'est même à ça qu'on les reconnaît.

Hors ligne

 

#2 29-08-2007 11:01:39

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] Copier un fichier texte

Bonjour,

Juste une question: Pourquoi ne veux-tu pas utiliser une datastore avec les fonctions ImportFile et SaveAs?


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

Hors ligne

 

#3 29-08-2007 11:07:52

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

Re: [RESOLU] Copier un fichier texte

FileCopy ( sourcefile, targetfile {, replace } )  ?


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

Hors ligne

 

#4 29-08-2007 11:24:35

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Copier un fichier texte

importe ton fichier dans un dw externe puis fait un saveas de ta dw

Oups pardon Foon

Dernière modification par JCZ (29-08-2007 11:25:09)


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#5 29-08-2007 11:42:26

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] Copier un fichier texte

JCZ a écrit:

Oups pardon Foon

Pas grave.
La solution d'eRaSorZ est meilleure car plus directe
(et aussi, vu que cdtit semble ne pas vouloir utiliser saveas )


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

Hors ligne

 

#6 29-08-2007 11:55:06

cdtit  
Membre completement Geek
Lieu: Saint chéron
Date d'inscription: 19-12-2006
Messages: 124
Pépites: 678
Banque: 0

Re: [RESOLU] Copier un fichier texte

Merci de vos réponses;

la fonction FileCopy() ne semble pas être dispo en 6.5 (ok en 10.5)
Je ne suis pas oposé au saveas, j'aurais voulu eviter de manipuler les données lors de la copie.

Dernière modification par cdtit (29-08-2007 11:57:16)


Les cons ça ose tout. C'est même à ça qu'on les reconnaît.

Hors ligne

 

#7 29-08-2007 12:00:32

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] Copier un fichier texte

cdtit a écrit:

Je ne suis pas oposé au saveas, j'aurais voulu eviter de manipuler les données lors de la copie.

Avec une simple datastore external dans laquelle tu mets un champ "dummy", tu n'auras aucune manip
de données à faire et tout sera transparent pour l'utilisateur (surtout avec un simple fichier texte)


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

Hors ligne

 

#8 29-08-2007 12:21:39

cdtit  
Membre completement Geek
Lieu: Saint chéron
Date d'inscription: 19-12-2006
Messages: 124
Pépites: 678
Banque: 0

Re: [RESOLU] Copier un fichier texte

foon a écrit:

Avec une simple datastore external dans laquelle tu mets un champ "dummy", tu n'auras aucune manip
de données à faire et tout sera transparent pour l'utilisateur (surtout avec un simple fichier texte)

que veux tu dire par "dummy" ?


Les cons ça ose tout. C'est même à ça qu'on les reconnaît.

Hors ligne

 

#9 29-08-2007 13:34:40

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] Copier un fichier texte

Un simple champ de type alphanumérique et de grande taille (genre string de 2000 par exemple) qui sera destiné à recevoir les lignes de ton fichier de données lors de l'import....
Il faut évidemment qu'il soit suffisamment grand pour que chaque ligne de ton fichier de données puisse y être importée sans problème.


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

Hors ligne

 

#10 29-08-2007 13:46:58

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Copier un fichier texte

Le FileCopy est apparu en 7.
En 6.5 on utilisait un bon vieux FileOpen FileRead FileWrite par paquet de 32Ko (à coder une seule fois dans un bel objet uo_file) ou l'appel à l'API window CopyFileA ou run('copy ' + file1 + ' ' + file2).

La belle époque !

Au fait depuis FileCopy existe dans
PB 7
PB 8
PB 9
PB 10
PB 10.5
PB 11


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#11 29-08-2007 14:14:48

cdtit  
Membre completement Geek
Lieu: Saint chéron
Date d'inscription: 19-12-2006
Messages: 124
Pépites: 678
Banque: 0

Re: [RESOLU] Copier un fichier texte

Chrnico a écrit:

Le FileCopy est apparu en 7.
En 6.5 on utilisait un bon vieux FileOpen FileRead FileWrite par paquet de 32Ko ou l'appel à l'API window CopyFileA ou run('copy ' + file1 + ' ' + file2).

La belle époque !

Le problème c'est que je dois traiter des fichiers de plusieurs dizaines de milliers de lignes, à partir d'un poste client vers un serveur avec un reseau bof; pour aller alimenter la BDD sur un autre serveur !
En plus je compile PB 6.5 sur un poste NT4 pour des applis deployées sur des postes W2K ou XP ...

les bon vieux FileOpen, FileRead donnent des temps de traitement qui frolent l'heure et les API windows
ont été modifiées depuis NT4, donc probleme quand tu les appels avec l'ancienne syntaxe sous W2K.
Et j'ai toujours pas compris comment ils avaient réussi à installer les applis sous XP

Bon sinon, j'ai testé ImportFile et SaveAs; manifestement j'ai un problème sur le chemin d'accès au fichier par le réseau, le SaveAs me renvoie -1 que je lui passe 'c:\test.txt' ou '\\nom_machine\c\test.txt'


Les cons ça ose tout. C'est même à ça qu'on les reconnaît.

Hors ligne

 

#12 29-08-2007 14:21:01

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] Copier un fichier texte

cdtit a écrit:

...les bon vieux FileOpen, FileRead donnent des temps de traitement qui frolent l'heure ..

Tu as ouvert ton fichier en mode Stream ?


Si ton réseau est bof, inutile de te fatiguer tes performanes seront bof elles aussi.
A ta place, je n'écrirai pas un programme pour ça, mais exigerait que mes fichiers atterrissent directement sur mon serveur de base de données


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

Hors ligne

 

#13 29-08-2007 14:23:33

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] Copier un fichier texte

cdtit a écrit:

Bon sinon, j'ai testé ImportFile et SaveAs; manifestement j'ai un problème sur le chemin d'accès au fichier par le réseau, le SaveAs me renvoie -1 que je lui passe 'c:\test.txt' ou '\\nom_machine\c\test.txt'

Tu as vérifié que le répertoire auquel tu essayes d'accéder sur le réseau est bien partagé?


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

Hors ligne

 

#14 29-08-2007 14:36:18

cdtit  
Membre completement Geek
Lieu: Saint chéron
Date d'inscription: 19-12-2006
Messages: 124
Pépites: 678
Banque: 0

Re: [RESOLU] Copier un fichier texte

shahin a écrit:

cdtit a écrit:

...les bon vieux FileOpen, FileRead donnent des temps de traitement qui frolent l'heure ..

Tu as ouvert ton fichier en mode Stream ?

Si ton réseau est bof, inutile de te fatiguer tes performanes seront bof elles aussi.
A ta place, je n'écrirai pas un programme pour ça, mais exigerait que mes fichiers atterrissent directement sur mon serveur de base de données

Le prog est ecris depuis quelques années maintenant, et avait été dimentionné ad hoc pour un certain volume de données. Là ils font X10 et se demandent pourquoi ça rame.

Quand à exiger quoi que ce soit, je bosse tjs en 6.5, NT4, x86 et 128 de RAM, tu vois le genre.
Comme dis mon client, "avec lui je positive"

Dernière modification par cdtit (29-08-2007 14:41:33)


Les cons ça ose tout. C'est même à ça qu'on les reconnaît.

Hors ligne

 

#15 29-08-2007 14:40:38

cdtit  
Membre completement Geek
Lieu: Saint chéron
Date d'inscription: 19-12-2006
Messages: 124
Pépites: 678
Banque: 0

Re: [RESOLU] Copier un fichier texte

foon a écrit:

cdtit a écrit:

Bon sinon, j'ai testé ImportFile et SaveAs; manifestement j'ai un problème sur le chemin d'accès au fichier par le réseau, le SaveAs me renvoie -1 que je lui passe 'c:\test.txt' ou '\\nom_machine\c\test.txt'

Tu as vérifié que le répertoire auquel tu essayes d'accéder sur le réseau est bien partagé?

il n'y a pas de pb de ce coté là d'autant plus que je voudrais copier le fichier en local sur le c:\
le ImportFile est ok, donc j'importe bien les données du serveur distant dans mon appli en local;
c'est le SaveAs qui plante


Les cons ça ose tout. C'est même à ça qu'on les reconnaît.

Hors ligne

 

#16 29-08-2007 14:42:21

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] Copier un fichier texte

Ok, mais encore une fois :

Code: pb

FileOpen ( filename , StreamMode!, Read!)

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

Hors ligne

 

#17 29-08-2007 14:44:03

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] Copier un fichier texte

Pourrais-tu envoyer ton script PB sur lequel on voit le SaveAs?
Sinon, si c'est pour le sauvegarder sur C: de ta machine, ça ne devrait pas poser de problème, sauf si elle est configurée avec un accès en écriture sur le C: autorisé uniquement pour les profils admin


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

Hors ligne

 

#18 29-08-2007 14:46:37

cdtit  
Membre completement Geek
Lieu: Saint chéron
Date d'inscription: 19-12-2006
Messages: 124
Pépites: 678
Banque: 0

Re: [RESOLU] Copier un fichier texte

Pardon,
non j'ouvre en linemode!, read!, lockread!


Les cons ça ose tout. C'est même à ça qu'on les reconnaît.

Hors ligne

 

#19 29-08-2007 14:50:13

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

Re: [RESOLU] Copier un fichier texte

cdtit a écrit:

Bon sinon, j'ai testé ImportFile et SaveAs; manifestement j'ai un problème sur le chemin d'accès au fichier par le réseau, le SaveAs me renvoie -1 que je lui passe 'c:\test.txt' ou '\\nom_machine\c\test.txt'

as-tu essayé en mappant un lecteur réseau, par exemple R: = \\nom_machine\c puis en appelant R:\test.txt ?


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

Hors ligne

 

#20 29-08-2007 14:54:38

cdtit  
Membre completement Geek
Lieu: Saint chéron
Date d'inscription: 19-12-2006
Messages: 124
Pépites: 678
Banque: 0

Re: [RESOLU] Copier un fichier texte

foon a écrit:

Pourrais-tu envoyer ton script PB sur lequel on voit le SaveAs?
Sinon, si c'est pour le sauvegarder sur C: de ta machine, ça ne devrait pas poser de problème, sauf si elle est configurée avec un accès en écriture sur le C: autorisé uniquement pour les profils admin

le script c'est pas compliqué =>

Code: pb

long cl_i
string cs_null
Datastore ds_file
ds_file Create Datastore
ds_file.DataObject = 'ds_import'

SetNull(cs_null)

cl_i = ds_file.ImportFile(cs_null)
cl_i = ds_file.SaveAs("c:\test.txt")


Dans le cas du saveas, cl_i = - 1


Les cons ça ose tout. C'est même à ça qu'on les reconnaît.

Hors ligne

 

#21 29-08-2007 14:57:06

Mr Pink Eyes  
Power Excel
Award: bf
Lieu: Helsinki
Date d'inscription: 14-06-2007
Messages: 226
Pépites: 10,800
Banque: 24,007,877,677,213

Re: [RESOLU] Copier un fichier texte

faut preciser le type de SaveAs que tu veux, c'est peut-être juste ça non ? genre

Code: pb

dw_1.SaveAs("c:\test.txt",Text!,False)

http://www.blagoticone.com/avatar/animes/017.gif

Hors ligne

 

#22 29-08-2007 14:58:10

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] Copier un fichier texte

cdtit a écrit:

foon a écrit:

Pourrais-tu envoyer ton script PB sur lequel on voit le SaveAs?
Sinon, si c'est pour le sauvegarder sur C: de ta machine, ça ne devrait pas poser de problème, sauf si elle est configurée avec un accès en écriture sur le C: autorisé uniquement pour les profils admin

le script c'est pas compliqué =>

long cl_i
string cs_null
Datastore ds_file
ds_file Create Datastore
ds_file.DataObject = 'ds_import'

SetNull(cs_null)

cl_i = ds_file.ImportFile(cs_null)
cl_i = ds_file.SaveAs("c:\test.txt")



Dans le cas du saveas, cl_i = - 1

Dans l'importFile, il faut que tu passe le chemin d'accès de ton fichier à importer, pas NULL


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

Hors ligne

 

#23 29-08-2007 14:58:53

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Copier un fichier texte


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#24 29-08-2007 15:00:04

Mr Pink Eyes  
Power Excel
Award: bf
Lieu: Helsinki
Date d'inscription: 14-06-2007
Messages: 226
Pépites: 10,800
Banque: 24,007,877,677,213

Re: [RESOLU] Copier un fichier texte

foon a écrit:

cdtit a écrit:

cl_i = ds_file.SaveAs("c:\test.txt")

[/c]

Dans le cas du saveas, cl_i = - 1

Dans l'importFile, il faut que tu passe le chemin d'accès de ton fichier à importer, pas NULL

ça gene en rien le saveas ça si ?


http://www.blagoticone.com/avatar/animes/017.gif

Hors ligne

 

#25 29-08-2007 15:01:22

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] Copier un fichier texte

Mr Pink Eyes a écrit:

ça gene en rien le saveas ça si ?

Ben, c'est juste qu'il n'y a rien dans la datastore, donc il n'a rienà sauvegarder, d'où le -1


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

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22