Après windows pour les nuls, voici PB pour les bons (ou presque).

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 11-05-2009 13:53:26

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

[RESOLU] Index/datawindow

Bonjour tout le monde,


Comment utiliser les index dans un select d'une datawindow ?

Merci d'avance

Dernière modification par mattdamon (13-05-2009 18:21:43)

Hors ligne

 

#2 11-05-2009 14:21:17

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

Je suis arrivé à déclarer dans mon rapport, l'indexe : Index_dc , ce dernier porte sur la colonne dc (de type date) de la table hdc

Code: sql

SELECT /*+ INDEX(d Index_dc) */ 
 d.a, 
 d.b 
FROM 
 hdc d, 
 hvc c, 
 ho o  
WHERE (o.a = d.f)
 AND (d.dc <= c.dv)
 AND  (d.dc >  (SELECT MAX (c1.dv) 
              FROM hvc c1 
               WHERE (c1.pr = c.pr) 
        AND (c1.dv< c.dv) ) )



Le problème c'est que au niveau de PL/SQL developper et lors de l'exécution de la requete ci-dessus, il y eu changement de la syntaxe de requête qui devient :

Code: sql

SELECT 
 d.a, 
 d.b 
FROM 
 hdc d, 
 hvc c, 
 ho o  
WHERE (o.a = d.f)
 AND (d.dc <= c.dv)
 AND  (d.dc >  (SELECT MAX (c1.dv) 
              FROM hvc c1 
               WHERE (c1.pr = c.pr) 
        AND (c1.dv< c.dv) ) )



et par la suite ne tient pas compte de mon index !!  c'est bizarre non ?

Quelqu'un a une idée ?

Dernière modification par mattdamon (11-05-2009 14:21:28)

Hors ligne

 

#3 11-05-2009 14:44:05

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] Index/datawindow

C'est normal: Dans la première requête, tu utilises un hint qui force l'utilisation de ton indexe, et pas dans la seconde.


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

Hors ligne

 

#4 11-05-2009 14:49:15

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

foon a écrit:

C'est normal: Dans la première requête, tu utilises un hint qui force l'utilisation de ton indexe, et pas dans la seconde.

Désolé foon, j'ai mal exprimé mon problème...
J'ai voulu dire que lorsque je fais copie/coller de la première requête (avec forcage de indexe) sur PL/SQL developer pour l'exécuter, ce dernier enlève l'indexe... qui sera la 2 ième requête.

j'ai pas compris, pourquoi l'indexe a été enlevé ?

Si vous avez pas compris..;je peux expliquer autrefois !

Dernière modification par mattdamon (11-05-2009 14:51:35)

Hors ligne

 

#5 11-05-2009 14:56:46

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] Index/datawindow

Ce n'est pas l'indexe qui est enlevé, mais le hint.
Tu as essayé de le rajouter directement dans PL/SQL Developper?


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

Hors ligne

 

#6 11-05-2009 15:08:00

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

mon souhait consiste à forcer l'utilisation de l'indexe Index_dc dans l'exécution de ma requête, cette requête est passé en paramètre à une datawindow, mais malheureusement lorsque la retrieve est lancée sur cette datawindow, la requête passé à Oracle ne contient pas /*+ INDEX(d Index_dc) */, et ceci en consultant les requêtes exécutées sous oracle, est ce normal ?, je suppose que la datawindow considère ça comme un commentaire ? est ce que vous avez des solutions ?

Merci d'avance

Hors ligne

 

#7 11-05-2009 15:43:33

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] Index/datawindow

Mon conseil: passe par une procédure stockée utilisant le hint souhaité.


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

Hors ligne

 

#8 11-05-2009 16:23:18

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

foon a écrit:

Mon conseil: passe par une procédure stockée utilisant le hint souhaité.

Dans ce cas là, je peux utiliser un curseur

Mais j'ai pas compris, pourquoi la requête a été changée...

Dernière modification par mattdamon (11-05-2009 16:24:42)

Hors ligne

 

#9 11-05-2009 16:31:55

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] Index/datawindow

Je ne vois pas le rapport entre utiliser un curseur et utiliser une datawindow chargée par procédure stockée, mais bon...


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

Hors ligne

 

#10 11-05-2009 16:37:50

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

foon a écrit:

Je ne vois pas le rapport entre utiliser un curseur et utiliser une datawindow chargée par procédure stockée, mais bon...

Comment utiliser une datawindow chargée par procédure stockée ? Tu veux dire que je peux mettre ma procédure stockée dans la datasource de la datawindow ?

Hors ligne

 

#11 11-05-2009 16:44:08

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] Index/datawindow

datawindow data source stored procedure


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

Hors ligne

 

#12 11-05-2009 17:51:46

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

Lors de la création d'une datawindow a comme datasource une procédure stockée, l'éditeur de PB m'affiche pas la liste des procédures que j'ai par contre il m'affiche la liste des procédures système.

http://img125.imageshack.us/img125/6823/storedprocedures.jpg

il y t'il quelque chose qui manque pour voir ma procédure?

Hors ligne

 

#13 11-05-2009 18:16: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] Index/datawindow

Ta procédure est dans un package ou non? Tu l'as bien compilée sous le bon schéma, avec les grants qui vont bien?


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

Hors ligne

 

#14 11-05-2009 18:33:01

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

foon a écrit:

Ta procédure est dans un package ou non? Tu l'as bien compilée sous le bon schéma, avec les grants qui vont bien?

Oui dans un package bodies et aussi déclaré dans package !! je vois pas pourquoi mes procédures ne s'affichent plus !!

je me demande est-ce qu'il n' y a plus des déclarations qui manquent au niveau de PB ?

Dernière modification par mattdamon (11-05-2009 18:42:31)

Hors ligne

 

#15 11-05-2009 18:58:26

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] Index/datawindow

Non, il faut que tu demandes l'affichage des packages et de leurs contenus au niveau des paramétrages de ta connexion à la base de données Oracle.


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

Hors ligne

 

#16 11-05-2009 19:16:05

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

foon a écrit:

Non, il faut que tu demandes l'affichage des packages et de leurs contenus au niveau des paramétrages de ta connexion à la base de données Oracle.

Où Ça et comment ?

Dernière modification par mattdamon (11-05-2009 19:16:22)

Hors ligne

 

#17 11-05-2009 19:21:29

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] Index/datawindow

Database Profile SetUp => Onglet System => Cocher "List Package Subprograms"


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

Hors ligne

 

#18 12-05-2009 10:22:59

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

Bonjour à tous,

Je revient autrefois...
J'ai crée un exemple de procédure (ci-dessus) :

Code: SQL

CREATE OR REPLACE PROCEDURE select_rapport(numdeb INTEGER) IS
  li_num integer ;
  CURSOR conso_cursor IS
      SELECT o.num
      FROM op.TABLE1 o
      WHERE o.num = numdeb;

BEGIN

     OPEN cursor1 ;
     LOOP
     FETCH cursor1 INTO li_num ;
     
     END LOOP ;

     CLOSE cursor1 ;

END;


Maintenant j'ai 2 questions à poser :
1-) Lors de la création de la datawindow en lui donnant comme datasource cette procédure, PB se plante...et la datawindow ne se crée pas malgré que la procédure est syntaxiquement correcte, pourquoi ?

2-) Si j'arrive a créer la datwindow et dans mon select j'ai plusieurs champs avec plusiers lignes à afficher dans mon rapport, quel est le liens entre un select chargé dans ma procédure et la retrieve des lignes trouvées ? autrement comment faire le retrieve() ?

Merci et bonne journée

Dernière modification par mattdamon (12-05-2009 10:24:29)

Hors ligne

 

#19 12-05-2009 11:16:46

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] Index/datawindow

Il faut que ta procédure stockée retourne ton result set sous forme de curseur en INPUT/OUTPUT. Sinon, ça ne peut pas marcher.

Exemple:

Code: mssql

--
--
TYPE type_rec_rce_paie_histo IS RECORD (    emp_matricule           gpm_employe.emp_matricule%type,
                                                emp_nom                 gpm_employe.emp_nom%type,
                                                emp_prenom              gpm_employe.emp_prenom%type,
                                                id_rce_paie             rce_paie_histo.id_rce_paie%type,
                                                id_employe              rce_paie_histo.id_employe%type, 
                                                id_periode_paie         rce_paie_histo.id_periode_paie%type, 
                                                rcepaie_date_fin        rce_paie_histo.rcepaie_date_fin%type,
                                                rcepaie_alternance      rce_paie_histo.rcepaie_alternance%type, 
                                                rcepaie_seuil_maj       rce_paie_histo.rcepaie_seuil_maj%type, 
                                                rcepaie_hr_supp_maj     rce_paie_histo.rcepaie_hr_supp_maj%type, 
                                                rcepaie_majoration      rce_paie_histo.rcepaie_majoration%type, 
                                                rcepaie_maj_tx01        rce_paie_histo.rcepaie_maj_tx01%type, 
                                                rcepaie_maj_tx02        rce_paie_histo.rcepaie_maj_tx02%type, 
                                                rcepaie_hr_supp_nonmaj  rce_paie_histo.rcepaie_hr_supp_nonmaj%type, 
                                                rcepaie_prec            rce_paie_histo.rcepaie_prec%type,
                                                rcepaie_acquis          rce_paie_histo.rcepaie_acquis%type, 
                                                rcepaie_pris            rce_paie_histo.rcepaie_pris%type, 
                                                rcepaie_solde           rce_paie_histo.rcepaie_solde%type, 
                                                rcepaie_description     rce_paie_histo.rcepaie_description%type );
--
--                                                
TYPE g_cur_rce_paie_histo IS REF CURSOR RETURN type_rec_rce_paie_histo;
   --
--
    PROCEDURE SP_EXTRACT_RCE_PAIE_HISTO (   a_i_id_periode_paie     IN              rce_paie_histo.id_periode_paie%type, 
                                            a_cur_rce_paie_histo    IN OUT NOCOPY   g_cur_rce_paie_histo)
    --
    IS
    --
    BEGIN
        --
        OPEN a_cur_rce_paie_histo FOR
            SELECT  emp_matricule,         
                    emp_nom,               
                    emp_prenom,            
                    id_rce_paie,           
                    id_employe,            
                    id_periode_paie,       
                    rcepaie_date_fin,      
                    rcepaie_alternance,    
                    rcepaie_seuil_maj,     
                    rcepaie_hr_supp_maj,   
                    rcepaie_majoration,    
                    rcepaie_maj_tx01,      
                    rcepaie_maj_tx02,      
                    rcepaie_hr_supp_nonmaj,
                    rcepaie_prec,          
                    rcepaie_acquis,        
                    rcepaie_pris,          
                    rcepaie_solde,         
                    rcepaie_description   
             FROM   rcepaie
             WHERE rcepaie.id_periode_paie = a_i_id_periode_paie;
        --
    EXCEPTION
        --
        WHEN NO_DATA_FOUND THEN
            --
            NULL;
            --
        WHEN OTHERS THEN
            --
            RAISE;
            --
    END SP_EXTRACT_RCE_PAIE_HISTO;

A toi d'adapter, mais sache évidemment que le curseur doit être déclaré dans un PKS si tu utilises des packages, sinon PB ne pourra pas y accéder.


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

Hors ligne

 

#20 12-05-2009 12:18:33

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

Merci infiniment foon pour toute cette éclaircissement, je vais l'essayer et je vous tient en courant pour les nouvelles....

Hors ligne

 

#21 12-05-2009 14:53:56

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,775,808

Re: [RESOLU] Index/datawindow

as tu regardé ce sujet ?


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

Hors ligne

 

#22 12-05-2009 15:48:23

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

JCZ a écrit:

as tu regardé ce sujet ?

Intervention parfaite Mr JCZ, tu penses que c'est un problème des EBF PowerBuilder.
En fait, je travaille sur 10.5.1 build 6684 !!

Quels EBF je peux télécharger quel Bug ID?


lala a écrit:

Bonjour erasorz

Et oui, après installation des 3 EBF disponibles, le problème et résolu. Les temps de réponse sont super, je vois le HINT dans Oracle entreprise manager.
Et je n'ai pas à faire de procédures stockées.
C'est merveilleux.

Problème résolu.
Merci beaucoup.

Sur PBADONF on peux télécharger les EBF de la version 10.5 de PB ?

Merci

Dernière modification par mattdamon (12-05-2009 17:05:27)

Hors ligne

 

#23 12-05-2009 22:14:16

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

Sur le site de Sybase le EBF (Bug ID = 446929) corrige le Bug. mais ce dernier comptaible avec la version 10.5.2 et moi, j'ai la version 10.5.1, est-ce que normal j'utilise ce EBF avec ma version de PB ?

Merci,

Hors ligne

 

#24 13-05-2009 18:20:52

mattdamon  
Le Tuniso-Parisien
Lieu: Livry-Gargan 93190
Date d'inscription: 29-12-2007
Messages: 569
Pépites: 89
Banque: 77,512,666,613,392,944

Re: [RESOLU] Index/datawindow

C'est parfait, j'ai installé l'EBF 15278 et ca marche bien....    en plus, mon chef il est très content de moi

Merci à tous

Dernière modification par mattdamon (13-05-2009 18:21:14)

Hors ligne

 

#25 13-05-2009 20:24:50

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

Re: [RESOLU] Index/datawindow

mattdamon a écrit:

en plus, mon chef il est très content de moi

cool
ton chef c'est cannavaro ? 


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

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22