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 28-01-2008 16:06:36

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

[RESOLU] SaveAs (selection des colonnes a sauvegarder) ...

Bonjour,


Avant de partir dans la création de datawindow specifiques j'en appelle à vos talents de powerbuilder.

J'ai une datawindow avec on va dire une dizaine de colonnes et je voudrais sauvegarder le contenu de cette datawindow dans un fichier Excel par exemple.

Jusque là rien de compliqué puisque il suffit d'appeler la fonction SaveAs().

Mais maintenant j'aimerais savoir si il y a un moyen simple pour paramétrer quelles sont les colonnes qui seront sauvegardées dans le fichier.

Par exemple je ne voudrais garder que les colonnes 1,2,5 et 6 dans mon exportation.

Des idées pour réaliser celà?

Merci pour vos reponses et au passage : 500 messages


Pour l'instant je commence a coder quelque chose du genre :

Code: pb

ll_nb_lignes = dw1.RowCount()
ds_export.Object.col1[1,ll_nb_lignes] = dw1.Object.col1[1,ll_nb_lignes]
ds_export.Object.col2[1,ll_nb_lignes] = dw1.Object.col2[1,ll_nb_lignes]
ds_export.Object.col3[1,ll_nb_lignes] = dw1.Object.col5[1,ll_nb_lignes]
ds_export.Object.col4[1,ll_nb_lignes] = dw1.Object.col6[1,ll_nb_lignes]

Dernière modification par Nephtis (31-01-2008 17:30:33)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#2 28-01-2008 16:18:03

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

Re: [RESOLU] SaveAs (selection des colonnes a sauvegarder) ...

Salut, apparemment c'est la bonne solution DW -> DS, ensuite supprimer les colonnes inutiles du DS puis DS.saveas.
Il y a des pistes ici.


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

Hors ligne

 

#3 28-01-2008 16:23:32

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] SaveAs (selection des colonnes a sauvegarder) ...

ErAsORz a écrit:

Salut, apparemment c'est la bonne solution DW -> DS, ensuite supprimer les colonnes inutiles du DS puis DS.saveas.
Il y a des pistes ici.


Pas mal le lien et ça semble bien repondre à ma question.
Je teste et je fais un retour juste après ...


NB : juste pour m'éviter de faire des aller retour (dw_1.Modify("destroy column salary"))

Dernière modification par Nephtis (28-01-2008 16:24:31)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#4 28-01-2008 17:01:57

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] SaveAs (selection des colonnes a sauvegarder) ...

Code: pb

// On ne veut sauvegarder que quelques colonnes donc on va un peu ruser
// en faisant une copie de dw_1 dans une datastore locale puis en supprimant
// les colonnes qui sont en trop

DataStore    lds_export
Long        ll_nb_lignes
Integer      li_code_retour


lds_export = Create DataStore

lds_export.DataObject = dw_1.DataObject

// On copie toutes les lignes de dw_1 dans la datastore
ll_nb_lignes = dw_1.RowCount()
dw_1.RowsCopy(1,ll_nb_lignes,Primary!,lds_export,1,Primary!)

// On supprime les colonnes qui nous sont inutiles
lds_export.Modify("destroy column col_1")
lds_export.Modify("destroy column col_2")
lds_export.Modify("destroy column col_3")
[...]


ll_nb_lignes = lds_export.RowCount()
MessageBox("Debug","Nombre de lignes dans la datastore : " + String(ll_nb_lignes))

li_code_retour = lds_export.SaveAs()

MessageBox("Debug", "Code retour de SaveAs : " + String(li_code_retour))


J'ai du mal a faire marcher le SaveAs

Son code retour est -1 mais je ne sais pas trop pourquoi, des idées?


Nb : le premier messagebox m'affiche bien le nombre de ligne qu'il y avait dans dw_1

Dernière modification par Nephtis (28-01-2008 17:02:52)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#5 28-01-2008 17:04:12

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

Re: [RESOLU] SaveAs (selection des colonnes a sauvegarder) ...

Bonjour,

Il faut obligatoirement que tu spécifies le chemin de ton fichier constitué pour un saveas sur datastore:

Aide PB:

Working with DataStore objects  If you are working with a DataStore, you must supply the filename argument


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

Hors ligne

 

#6 28-01-2008 17:09:02

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] SaveAs (selection des colonnes a sauvegarder) ...

foon a écrit:

Bonjour,

Il faut obligatoirement que tu spécifies le chemin de ton fichier constitué pour un saveas sur datastore:

Aide PB:

Working with DataStore objects  If you are working with a DataStore, you must supply the filename argument

Exact ça m'avait echapé, je teste en créant une datawindow ...


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#7 28-01-2008 17:19:00

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] SaveAs (selection des colonnes a sauvegarder) ...

Décidemment ce petit script à décidé de m'embeter jusqu'au bout

Code: pb

// On ne veut sauvegarder que quelques colonnes donc on va un peu ruser
// en faisant une copie de dw_1 dans une datastore locale puis en supprimant
// les colonnes qui sont en trop

DataWindow    ldw_export
Long        ll_nb_lignes
Integer      li_code_retour


ldw_export = Create DataWindow

ldw_export.DataObject = dw_1.DataObject

// On copie toutes les lignes de dw_1 dans la datastore
ll_nb_lignes = dw_1.RowCount()
MessageBox("Debug","Nombre de lignes dans dw_1 : " + String(ll_nb_lignes))
li_code_retour = dw_1.RowsCopy(1,ll_nb_lignes,Primary!,ldw_export,1,Primary!)
MessageBox("Debug","Code retour du RowsCopy : " + String(li_code_retour))
li_code_retour = ldw_export.AcceptText()
MessageBox("Debug","Code retour de AcceptText : " + String(li_code_retour))
ll_nb_lignes = ldw_export.RowCount()
MessageBox("Debug","Nombre de lignes dans la datastore : " + String(ll_nb_lignes))

// On supprime les colonnes qui nous sont inutiles
ldw_export.Modify("destroy column col_1")
ldw_export.Modify("destroy column col_2")
ldw_export.Modify("destroy column col_3")
[...]

ll_nb_lignes = ldw_export.RowCount()
MessageBox("Debug","Nombre de lignes dans la datastore : " + String(ll_nb_lignes))

li_code_retour = ldw_export.SaveAs()

MessageBox("Debug", "Code retour de SaveAs : " + String(li_code_retour))


Cette fois ci c'est le RowsCopy qui refuse de copier les lignes dans ma datawindow locale

Dernière modification par Nephtis (28-01-2008 17:36:12)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#8 28-01-2008 17:25:44

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

Re: [RESOLU] SaveAs (selection des colonnes a sauvegarder) ...

Ton rowscopy retourne quel valeur?

Tu as essayé de faire un acceptext dans ldw_export avant ton rowcount?


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

Hors ligne

 

#9 28-01-2008 17:35:20

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] SaveAs (selection des colonnes a sauvegarder) ...

foon a écrit:

Ton rowscopy retourne quel valeur?

Tu as essayé de faire un acceptext dans ldw_export avant ton rowcount?

Dés le RowsCopy --> code retour -1
AcceptText fait donc aussi --> code retour -1


Et si au passage quelqu'un peut m'expliquer ce qu'est le mode query pour une datawindow -->

Doc Pb pour RowsCopy a écrit:

Buffer manipulation and query mode  A DataWindow cannot be in query mode when you call the RowsCopy function.

Dernière modification par Nephtis (28-01-2008 17:43:24)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#10 28-01-2008 18:16:25

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] SaveAs (selection des colonnes a sauvegarder) ...

Bon j'ai créé une datawindow sur la fenetre (au lieu que de la créer dynamiquement dans le code) et la ça marche.

Avant de mettre le Resolu j'aimerais bien quand même comprendre cette histoire de query mode parce que je suppose fortement que mon problème venait de là


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22