IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Powerbuilder Discussion :

Exporter sous Excel une datawindow avec des reports (crosstab) dedans


Sujet :

Powerbuilder

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut Exporter sous Excel une datawindow avec des reports (crosstab) dedans
    Bonjour,

    Je dispose d'un control datawindow qui s'appelle pdw_master.
    Le dataobject de ce contrôle est d_report_detail_intermediaire.
    Ce dernier est composé de 3 reports (qui sont des crosstab) dans le champ detail.
    Mon problème est que je n'arrive pas à les exporter sous Excel. L'impression marche bien en executant le script pdw_master.Print() mais je n'arrive pas à utiliser la méthode SaveAs dans ce cas précis.
    Pourriez-vous m'aider ?
    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    Bonjour

    A ma connaissance, il n'est pas possible d'exporter au format Excel une dw composite.
    Par contre, on peut exporter chaque dw contenue dans la composite en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pdw_master.getChild( "d_xxx", ldwc)
    ldwc.saveAs(...)
    A+ Thig

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Thig
    Bonjour

    A ma connaissance, il n'est pas possible d'exporter au format Excel une dw composite.
    Par contre, on peut exporter chaque dw contenue dans la composite en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pdw_master.getChild( "d_xxx", ldwc)
    ldwc.saveAs(...)
    A+ Thig
    Merci, ça marche !
    Par contre est-il possible d'exporter mes deux dwc dans deux feuilles d'un même classeur excel ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    Bonjour

    Directement depuis PB c'est pas possible.

    Par contre, il doit être possible de faire une macro sous Excel qui fait ça et de lancer cette macro depuis PB en utilisant un OLEObject ...


    A+ Thig

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Thig
    Bonjour

    Directement depuis PB c'est pas possible.

    Par contre, il doit être possible de faire une macro sous Excel qui fait ça et de lancer cette macro depuis PB en utilisant un OLEObject ...


    A+ Thig
    Ok merci !

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    J'ai encore un problème avec ce point.
    J'essaie d'écrire les deux reports de ma datawindow dans une même feuille Excel via un OLE.
    Voici comment je m'y prends :

    - je déclare en datawindowchild mes deux reports
    - je récupère le nombre de lignes et colonnes de mes deux dwc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ll_numcols = long(ldwc_f1.describe("Column.Count"))
    ll_numrows = ldwc_f1.RowCount()
    
    ll_numcols2 = long(ldwc_f2.describe("Column.Count"))
    ll_numrows2 = ldwc_f2.RowCount()
    - je crée mon lien OLE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xlsheet= CREATE OLEObject
    ret1 = xlsheet.ConnectToNewObject( "excel.application" )
    - je rends visible Excel
    - ensuite il y a un pb : je souhaite créer le fameux raccourci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlsub = xlsheet.Application.ActiveWorkbook.Worksheets[1]
    (xlsub est déclaré comme OLE)
    Mais à l'éxécution je rencontre ce message d'erreur :
    Null object reference at line 80 in ue_export event of object w_imp_inter.
    - je me débarasse de ce message en n'utilisant pas xlsub et en écrivant la ligne d'après entièrement.

    - je copie ma première dwc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For ll_c = 1 to ll_numcols
    For ll_r = 1 to ll_numrows
    xlsheet.Application.ActiveWorkbook.Worksheets[1].cells[ll_r,ll_c] = ldwc_f1.getitemnumber(ll_r, ll_c)
    - je copie la deuxième, mais je souhaite le faire dans la même feuille, à coté de la première
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For ll_c = 1 to ll_numcols2
    For ll_r = 1 to ll_numrows2
    xlsheet.Application.ActiveWorkbook.Worksheets[1].cells[ll_r+20,ll_c+3] = ldwc_f2.getitemnumber(ll_r, ll_c)
    - je sauvagarde le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlsheet.Application.Activeworkbook.SaveAs(ls_file)
    Mais à l'éxécution, au moment de sauvegarder j'ai ce message d'erreur :
    Null object reference at line 93 in ue_export event of object w_imp_inter.
    Je débute dans les OLE, quelqu'un pourrait-il m'aider ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    LU,

    Tu aurais plutôt intérêt à créer une datawindow "external", qui correspondrait a l'assemblage de tes deux dw. (tout faire à la main ^^)

    De là, tu la charges en datastore et tu la remplis selon tes besoins ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          ds.object."champ_1"[ligne] = dw1.object."champ_1"[ligne]
          ds.object."champ_2"[ligne] = dw2.object."champ_1"[ligne]
    
      etc...................
    Puis, seulement après le remplissage de ta datastore (ac tes 2 dw) tu l'export avec ton save_as.

    voot.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/03/2009, 19h17
  2. Réponses: 7
    Dernier message: 03/10/2007, 19h06
  3. Comment protéger une feuille excel en vba avec des paramètres?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2007, 17h21
  4. Comment protéger une feuille excel en vba avec des paramètres?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2007, 17h20
  5. Export sous excel d'une zone déroulante
    Par jaja63 dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2005, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo