Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

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 14-02-2009 12:42:48

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Manipulation d'un report

Bonjour à tous
J'aimerais me connecter à mon objet r_echeance qui est en fait un état conçu sous Infomaker 11.0 build 6525. J'aimerais aussi pouvoir par le code accéder à tous les champs, bref prendre un contrôle total des champ par le code. J'ai déjà conçu mon état.
Merci je compte beaucoup sur vous.

Hors ligne

 

#2 14-02-2009 13:33:37

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

Par exemple pour manipuler un DW, on fait w_fen.dw_1 et pour un objet du DW, on fait :
w_fen.dw_1.Object.nom_objet[ indice_ligne ]. J'aimerais le faire avec un report
Merci

Hors ligne

 

#3 16-02-2009 07:52:35

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

Re: Manipulation d'un report

Bonjour, ton report est-il inclus dans un composite ?


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

Hors ligne

 

#4 16-02-2009 08:42:05

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

Bonjour erasorz,
Mon report n'est pas inclut dans une composite. J'ai choisit la source de données External et j'ai identifié chaque controle de mon report.
Merci

Hors ligne

 

#5 16-02-2009 08:56:18

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

Re: Manipulation d'un report

Il est donc mis directement dans un dw control de fenêtre ? Le cas écheant w_fen.dw_1 devrait marcher...


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

Hors ligne

 

#6 16-02-2009 09:31:37

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

Bonjour erasorz,
Ce matin j'ai appliqué les instructions de vincent janssens et ca m'a donné des résultats positifs
Mon report est mis dans un dw_control.
Puis je lui associe mon report via un 
dw_control.dataobject = 'r_echeance';
Puis un
dw_control.settransobject(sqlca);
Puis
w_control.retrieve(<tes retrieval arguments>);
Le dw_control affiche les données correctement. Est-il possible d'ouvrir mon report dans l'éditeur infomaker directement sans passer par l'objet dw_control? Sinon, Une fois que mon report s'affiche dans le dw_control, est-il possible de le mettre en page et de l'imprimer?
Merci

Hors ligne

 

#7 16-02-2009 09:48:49

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

Re: Manipulation d'un report

en fait, je ne comprends pas vraiment le contexte
tu bosses avec IM tu veux éditer un report ?
tu veux faire un programme PB incluant un report créé sous IM ?


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

Hors ligne

 

#8 16-02-2009 10:27:41

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

Bonjour erasorz
Oui exactement je veux ouvrir mon état crée sous Infomaker 11.0 à partir de PB et l'exploiter dans l'éditeur de Infomaker.
Merci

Hors ligne

 

#9 16-02-2009 12:39:25

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

Re: Manipulation d'un report



en mode développement ou exécutable ?


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

Hors ligne

 

#10 16-02-2009 13:20:59

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

en mode éxécutable biensûr

Hors ligne

 

#11 17-02-2009 07:24:03

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

Bonjour,
Est ce quelqu'un a déjà utilisé infomaker pour créer un état et l'a utilisé dans PB ? Si oui comment fait-il pour paramétrer son état et l'afficher dans PB et ensuite l'imprimer. Parce qu'à part le dw_control, est-il possible de visualiser son état dans PB lorsqu'on clique sur un bouton?
Merci de votre réponse

Hors ligne

 

#12 17-02-2009 07:29:13

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

Re: Manipulation d'un report

IM n'est ni plus ni moins qu'une version light de PB avec uniquement le painter DWO...
Un état créé dans IM ou PB s'utilise de la même façon dans PB. (dw control)
Ou bien ?


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

Hors ligne

 

#13 17-02-2009 07:44:32

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

Re: Manipulation d'un report

Bonjour,

C'est exactement ce que je fais dans mon PGI. Parcontre, je stocke les reports dans la base de données.
Afin de pouvoir les éditer avec infomaker, je les exporte dans une PBL temporaire afin de pouvoir les ouvrir avec infomaker.

Un petit extrait de mon code permettant d'ouvrir un report dans infomaker, je pense que tu comprendras aisément la signification de mes variables d'environnement (glog.sBase, gFileNames.Infomaker (chemin infomaker), gFileNames.PBL (chemin complet de la PBL), ls_nom (nom du report à ouvrir), la connexion est réalisée en ODBC) :

Code: pb

ls_Reg_Key = "HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\11.0\DatabaseProfiles\PowerBuilder\" + glog.sBase

// On crée l'arborescence nécessaire dans la base de registre
// pour que infomaker s'ouvre sans la boite de connexion
RegistrySet( ls_Reg_Key, "Autocommit", RegString!, 'FALSE')
RegistrySet( ls_Reg_Key, "Database", RegString!, '')
RegistrySet( ls_Reg_Key, "DatabasePassword", RegString!, '0000')
RegistrySet( ls_Reg_Key, "DBMS", RegString!, 'ODBC')
RegistrySet( ls_Reg_Key, "DBParm", RegString!, "ConnectString='DSN=" + glog.sBase + ";UID=dba;PWD=PWD=XXXXXXXXXXXX'")
RegistrySet( ls_Reg_Key, "Lock", RegString!, '')
RegistrySet( ls_Reg_Key, "LogId", RegString!, '')
RegistrySet( ls_Reg_Key, "LogPassword", RegString!, '0000')
RegistrySet( ls_Reg_Key, "NewLogic", RegString!, 'TRUE')
RegistrySet( ls_Reg_Key, "Prompt", RegString!, 'FALSE')
RegistrySet( ls_Reg_Key, "ServerName", RegString!, '')
RegistrySet( ls_Reg_Key, "UserId", RegString!, '')

ls_Reg_Key = "HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\11.0\DatabaseProfiles\PowerBuilder"

// Il ne faut pas oublier de changer ce paramètre car c'est
// lui qui détermine avec quelle base ouvrir infomaker
RegistrySet( ls_Reg_Key, "MRUProfile", glog.sBase );

ls_cmd  = '"' + gFileNames.Infomaker + '" /p Report /l ' + gFileNames.PBL + " /O " + lower( TRIM ( ls_nom ) )

IF  Run(  ls_cmd, MAXIMIZED! ) = -1 THEN
  ls_ErrorMsg = MsgGetStr('INFOMAKER' , 'INFOMAKER_NOTFOUND' )
  MessageBox( 'ERREUR',   ls_ErrorMsg +  '~r' + gFileNames.Infomaker  )
  Return 
END IF

Hors ligne

 

#14 17-02-2009 08:14:21

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

Re: Manipulation d'un report

Bonjour,

J'étais en train de répondre lorsque tu as posé une autre question :

Est ce quelqu'un a déjà utilisé infomaker pour créer un état et l'a utilisé dans PB ? Si oui comment fait-il pour paramétrer son état et l'afficher dans PB et ensuite l'imprimer. Parce qu'à part le dw_control, est-il possible de visualiser son état dans PB lorsqu'on clique sur un bouton?

La réponse est oui, tu peux apercevoir une copie d'écran çi-dessous montrant un aperçu avant impression d'un report dans l'application PB :
(Pour le code, tu géres comme pour une datawindow normale dw_1.dataobject= 'xx', dw_1.SettransObject(..), dw_1.Retrieve(...),dw_1.Print(), ...)

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

Hors ligne

 

#15 17-02-2009 09:57:24

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

A quoi renvoie la variable d'environnement glog.sBase ?
Merci

Hors ligne

 

#16 17-02-2009 10:40:48

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

Bonjour buck,

J'utilise l'objet transaction sqlca pour me connecter à oracle 10g.
Voici les paramètres que j'utilise pour me connecter

// Profile ETMF
SQLCA.DBMS = "O10 Oracle10g (10.1.0)"
SQLCA.LogPass = <****>
SQLCA.ServerName = "ET_ANNE"
SQLCA.LogId = "ETMF"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""


J'ai crée les variables d'environnement dans windows comme suit:

gFileNames.Infomaker     =   C:\Program Files\Sybase\InfoMaker 11.0\im110
gFileNames.PBL               =   C:\Documents and Settings\HP_Propriétaire\Bureau\ETMF\etmf.pbl
glog.sBase =                   =   O10 Oracle10g (10.1.0)


Et voici comment j'agence le code du bouton:

Code: pb

string ls_reg_key , ls_cmd , ls_nom , ls_ErrorMsg

dw_5.dataobject = 'rpt_echeance'
dw_5.settransobject(sqlca) 
//dw_5.retrieve()
//dw_5.print(true,true)

ls_Reg_Key = "HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\11.0\DatabaseProfiles\PowerBuilder\" + glog.sBase

// On crée l'arborescence nécessaire dans la base de registre
// pour que infomaker s'ouvre sans la boite de connexion
RegistrySet( ls_Reg_Key, "Autocommit", RegString!, 'FALSE'  )
RegistrySet( ls_Reg_Key, "Database", RegString!, ''  )
RegistrySet( ls_Reg_Key, "DatabasePassword", RegString!, 'MFET'  )
RegistrySet( ls_Reg_Key, "DBMS", RegString!, 'O10 Oracle10g (10.1.0)'  )
RegistrySet( ls_Reg_Key, "DBParm", RegString!, ''  )
RegistrySet( ls_Reg_Key, "Lock", RegString!, ''  ) 
RegistrySet( ls_Reg_Key, "LogId", RegString!, 'ETMF'  )
RegistrySet( ls_Reg_Key, "LogPassword", RegString!, 'MFET'  )
RegistrySet( ls_Reg_Key, "NewLogic", RegString!, 'TRUE'  )
RegistrySet( ls_Reg_Key, "Prompt", RegString!, 'FALSE'  )
RegistrySet( ls_Reg_Key, "ServerName", RegString!, 'ET_ANNE'  )
RegistrySet( ls_Reg_Key, "UserId", RegString!, '')

ls_Reg_Key = "HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\11.0\DatabaseProfiles\PowerBuilder"


// Il ne faut pas oublier de changer ce paramètre car c'est
// lui qui détermine avec quelle base ouvrir infomaker
RegistrySet( ls_Reg_Key, "ETMF", glog.sBase )

ls_nom = 'rpt_echeance'   //nom du report à ouvrir

ls_cmd  = '"' + gFileNames.Infomaker + '" /p Report /l ' + gFileNames.PBL + " /O " + lower( TRIM ( ls_nom ) )

IF  Run(  ls_cmd, MAXIMIZED! ) = -1 THEN
  ls_ErrorMsg = MsgGetStr('INFOMAKER' , 'INFOMAKER_NOTFOUND' )
  MessageBox( 'ERREUR',   ls_ErrorMsg +  '~r' + gFileNames.Infomaker  )
  Return 
END IF




Il m'affiche les erreurs suivantes:
Undefined variable: glog
Undefined variable: gfilenames
Unknown function name: msggetstr

Comment déclarer les variables d'environnement ?
Comment écrire la fonction msggetstr ?

Merci infiniment buck

Hors ligne

 

#17 17-02-2009 11:23:35

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

Re: Manipulation d'un report

Bonjour,

Toutes les inscriptions dans la base de registre correspondent à l'équivalent de la création d'un "DB Profile" manuel dans infomaker.

L'exemple donnée est pour une base Adaptive Server Anywhere en connexion ODBC et non pour une connexion native oracle.

Tu crées ton db profile oracle dans infomaker et tu regardes dans la clé  => HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\11.0\DatabaseProfiles\PowerBuilder\" + Nom du profil
et tu adaptes le code en fonction de ce que tu vois sous cette clé.

gFileNames.Infomaker et gFileNames.PBL sont des nvos propres à mon application qui sont initialisées au chargement de l'application.

Pour test tu les remplaces par :

Code: PB

string ls_infomaker
string ls_pbl


De même, MsgGetStr est une fonction propre à mon application pour les messages à partir de la base de données (internationalisation). Pour test, tu remplaces uniquement par un MessageBox :

Code: PB

MessageBox("Erreur", "Infomaker non trouvé")

Hors ligne

 

#18 17-02-2009 14:34:44

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

Bonsoir Buck et infiniment merci,
j'ai modifié tes variables en mettant des string et j'ai vérifié que les valeurs dans le registre  sont ceux que j'utilise dans mon code et ca a marché. Mon état s'ouvre dans infomaker en mode développement(création) , mais j'aimerais qu'il apparaisse en mode éxécution afin qu'on ne puisse pas le modifier.
Merci

Hors ligne

 

#19 17-02-2009 15:51:38

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

Re: Manipulation d'un report

Bonjour,

Je n'ai pas bien compris ta réponse. Tu veux ouvrir le report en mode compilé sans pouvoir appliquer de modification dessus ou tu veux un aperçu avant impression de la sortie du report (donc non-modifiable).

Parce que l'intérêt d'ouvrir le report avec infomaker est de permettre à l'utilisateur de créer, modifier et personnaliser ses propres reports.

Hors ligne

 

#20 17-02-2009 17:16:33

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

je veux un aperçu avant impression de la sortie du report (non modifiable) comme tu l'a fait avec l'extrait de compte ci-dessus. Puisque l'utilisateur ne doit pas pouvoir modifier la structure du report.
Merci

Hors ligne

 

#21 17-02-2009 18:35:42

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

Re: Manipulation d'un report

Bonjour,

Tu codes comme exactement comme avec une datawindow. Tu poses un contrôle datawindow sur une fenêtre avec comme datobject ton report et tu fais un "Retrieve" (sans oublier le SetTransObject).

Hors ligne

 

#22 18-02-2009 06:41:06

patricktobou  
Membre Geek
Lieu: Cameroun
Date d'inscription: 31-10-2008
Messages: 57
Pépites: 309
Banque: 0

Re: Manipulation d'un report

Bonjour Buck,
Je précise ma question: en fait je veux que mon rapport s'ouvre dans infomaker mais je ne veux pas que les fenêtres <propriétés> et <design> s'ouvrent. je veux voir juste l'aperçu du rapport s'afficher dans infomaker(1 seule fenêtre). Est-il possible?
Merci

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22