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










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 :
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)
Hors ligne














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.
Hors ligne







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)
Hors ligne







// 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)
Hors ligne











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
Hors ligne







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 ...
Hors ligne







Décidemment ce petit script à décidé de m'embeter jusqu'au bout
// 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)
Hors ligne











Ton rowscopy retourne quel valeur?
Tu as essayé de faire un acceptext dans ldw_export avant ton rowcount?
Hors ligne







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)
Hors ligne







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à
Hors ligne
Pages: 1


