Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/07/2007, 10h05   #1
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 213
Points : 4 213
Par défaut Affichage d'images en 4 x 3

Bonjour,

En forms 9, j'ai besoin d'afficher des images basées mais sur 4 colonnes et 3 lignes. Les identifiants sont connus dans 12 paramètres (p1 .. p12)

J'avais réussi à le faire sur des types autres que le BLOB avec la fonction analytique LEAD, mais le BLOB n'est pas "analyticable".

Pour l'instant j'ai fait 3 blocs basés (Record Direction = Horizontal) qui me ramènent chacun les 4 images de sa ligne, mais les temps de réponse sont pas super bons.

Y a t-il une autre solution ?
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 17h48   #2
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,
Si j'ai bien compris ton problème.
Tu peux baser ton block sur une vue col1-est basée sur ->p1, col2-->p2....,col12-->p12 ;
dans ta forme tu places tes blob avec l'ordre suivant:
p1 p2 p3 p4
p5 p6 p7 p8
p9 p10 p11 p12
Code :
1
2
3
4
5
6
 
CREATE OR REPLACE vue v_1 (p1,p2,p3....p12) AS 
SELECT col1,col2....,col12
FROM ...
ou 
SELECT col12,col10....
col1.............col12 c'est des blob
L'ordre d'affichage est spécifié dans le Select de la vue.
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 10h16   #3
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 213
Points : 4 213
Comment tu écris la requete de la vue avec TABLE IMG (article NUMBER, img BLOB) ?

Comment tu arrives à transformer img en col1 pour p1, col2 pour p2 dans le SELECT ?
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 15h56   #4
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Comment on devine que tu as une seule table .

Oui c'est pas évident.
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 15h22   #5
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,
Citation:
Envoyé par McM
Comment tu écris la requete de la vue avec TABLE IMG (article NUMBER, img BLOB) ?

Comment tu arrives à transformer img en col1 pour p1, col2 pour p2 dans le SELECT ?
Essaie cette solution.

La solution consiste à pivoter la table img en 12 colonnes,
et après chercher les images de chaque colonne img1,img2.....,img12

Ce select me donne les images avec les articles pivotées en 12 colonnes.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
 
SELECT CASE
          WHEN img1.article  IS NOT NULL       THEN
           img1.img
          ELSE NULL
       END imag1,img1.article article1,
       CASE
          WHEN img2.article  IS NOT  NULL       THEN
            img2.img
          ELSE NULL
       END imag2, img2.article  article2,
       CASE
          WHEN img3.article  IS NOT  NULL       THEN
            img3.img
          ELSE NULL
       END imag3, img3.article article3
       ,
       CASE
          WHEN img4.article  IS NOT  NULL       THEN
            img4.img
          ELSE NULL
       END imag4, img4.article article4
       ,
       CASE
          WHEN img5.article  IS NOT  NULL       THEN
            img5.img
          ELSE NULL
       END imag5, img5.article article5
       ,
       CASE
          WHEN img6.article  IS NOT  NULL       THEN
            img6.img
          ELSE NULL
       END imag6, img6.article article6
       ,
       CASE
          WHEN img7.article  IS NOT  NULL       THEN
            img7.img
          ELSE NULL
       END imag7, img7.article article7
       ,
       CASE
          WHEN img8.article  IS NOT  NULL       THEN
            img8.img
          ELSE NULL
       END imag8, img8.article article8
       ,
       CASE
          WHEN img9.article  IS NOT  NULL       THEN
            img9.img
          ELSE NULL
       END imag9, img9.article article9
       ,
       CASE
          WHEN img10.article  IS NOT  NULL       THEN
            img10.img
          ELSE NULL
       END imag10, img10.article article10
       ,
       CASE
          WHEN img11.article  IS NOT  NULL       THEN
            img11.img
          ELSE NULL
       END imag11, img11.article article11
       ,
       CASE
          WHEN img12.article  IS NOT  NULL       THEN
            img12.img
          ELSE NULL
       END imag12, img12.article article12
 FROM /*  La table img est pivoté en 12 colonnes, les cellules se sont des articles*/
       (SELECT   MAX (DECODE (y, 1, article)) c1,
                 MAX (DECODE (y, 2, article)) c2,
                 MAX (DECODE (y, 3, article)) c3,
                 MAX (DECODE (y, 4, article)) c4,
                 MAX (DECODE (y, 5, article)) c5,
                 MAX (DECODE (y, 6, article)) c6,
                 MAX (DECODE (y, 7, article)) c7,
                 MAX (DECODE (y, 8, article)) c8,
                 MAX (DECODE (y, 9, article)) c9,
                 MAX (DECODE (y, 10, article)) c10,
                 MAX (DECODE (y, 11, article)) c11,
                 MAX (DECODE (y, 12, article)) c12
            FROM (SELECT article, x, y
                    FROM (SELECT TRUNC ((ROWNUM - 1) / 12) x,
                                 MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img
                            ORDER BY x))
        GROUP BY x
        ORDER BY x
        )i,
        /*les images de colonne 1*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=1 ) img1,
       /* les images de lcolonne 2*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=2 ) img2,
        /*les images de colonne 3*/
        (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=3 ) img3,
        /*les images de colonne 4*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=4 ) img4,
        /* les images de colonne 5*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=5 ) img5,   
        /*les images de colonne 6*/
        (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=6 ) img6,
       /*les images de colonne 7*/
        (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=7 ) img7,
        /* les images de colonne 8*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=8 ) img8,
       /*les images de colonne 9*/
        (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=9 ) img9,
        /*les images de colonne 10*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=10 ) img10,
        /* les images de colonne 11*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=11 ) img11,
        /*les images de colonne 12*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=12 ) img12
 WHERE (img1.article(+) = i.c1)
   AND (img2.article(+) = i.c2)
   AND (img3.article(+) = i.c3)
   AND (img4.article(+) = i.c4)
   AND (img5.article(+) = i.c5)
   AND (img6.article(+) = i.c6)
   AND (img7.article(+) = i.c7)
   AND (img8.article(+) = i.c8)
   AND (img9.article(+) = i.c9)
   AND (img10.article(+) = i.c10)
   AND (img11.article(+) = i.c11)
   AND (img12.article(+) = i.c12)
Pour la vue paramétrée
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
 
CREATE OR REPLACE VIEW vue_img(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12) AS
SELECT CASE
          WHEN img1.article  IS NOT NULL       THEN
           img1.img
          ELSE NULL
       END imag1,
       CASE
          WHEN img2.article  IS NOT  NULL       THEN
            img2.img
          ELSE NULL
       END imag2,
       CASE
          WHEN img3.article  IS NOT  NULL       THEN
            img3.img
          ELSE NULL
       END imag3
       ,
       CASE
          WHEN img4.article  IS NOT  NULL       THEN
            img4.img
          ELSE NULL
       END imag4 
       ,
       CASE
          WHEN img5.article  IS NOT  NULL       THEN
            img5.img
          ELSE NULL
       END imag5 
       ,
       CASE
          WHEN img6.article  IS NOT  NULL       THEN
            img6.img
          ELSE NULL
       END imag6
       ,
       CASE
          WHEN img7.article  IS NOT  NULL       THEN
            img7.img
          ELSE NULL
       END imag7
       ,
       CASE
          WHEN img8.article  IS NOT  NULL       THEN
            img8.img
          ELSE NULL
       END imag8
       ,
       CASE
          WHEN img9.article  IS NOT  NULL       THEN
            img9.img
          ELSE NULL
       END imag9
       ,
       CASE
          WHEN img10.article  IS NOT  NULL       THEN
            img10.img
          ELSE NULL
       END imag10
       ,
       CASE
          WHEN img11.article  IS NOT  NULL       THEN
            img11.img
          ELSE NULL
       END imag11
       ,
       CASE
          WHEN img12.article  IS NOT  NULL       THEN
            img12.img
          ELSE NULL
       END imag12
 FROM /*  La table img est pivoté en 12 colonnesw, les cellules sont des article*/
       (SELECT   MAX (DECODE (y, 1, article)) c1,
                 MAX (DECODE (y, 2, article)) c2,
                 MAX (DECODE (y, 3, article)) c3,
                 MAX (DECODE (y, 4, article)) c4,
                 MAX (DECODE (y, 5, article)) c5,
                 MAX (DECODE (y, 6, article)) c6,
                 MAX (DECODE (y, 7, article)) c7,
                 MAX (DECODE (y, 8, article)) c8,
                 MAX (DECODE (y, 9, article)) c9,
                 MAX (DECODE (y, 10, article)) c10,
                 MAX (DECODE (y, 11, article)) c11,
                 MAX (DECODE (y, 12, article)) c12
            FROM (SELECT article, x, y
                    FROM (SELECT TRUNC ((ROWNUM - 1) / 12) x,
                                 MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img
                            ORDER BY x))
        GROUP BY x
        ORDER BY x
        )i,
        /*les images de colonne 1*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=1 ) img1,
       /* les images de lcolonne 2*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=2 ) img2,
        /*les images de colonne 3*/
        (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=3 ) img3,
        /*les images de colonne 4*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=4 ) img4,
        /* les images de colonne 5*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=5 ) img5,   
        /*les images de colonne 6*/
        (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=6 ) img6,
       /*les images de colonne 7*/
        (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=7 ) img7,
        /* les images de colonne 8*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=8 ) img8,
       /*les images de colonne 9*/
        (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=9 ) img9,
        /*les images de colonne 10*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=10 ) img10,
        /* les images de colonne 11*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=11 ) img11,
        /*les images de colonne 12*/
       (SELECT article, img
                    FROM (SELECT MOD (ROWNUM - 1, 12) + 1 y, article, img
                            FROM img)
                            WHERE y=12 ) img12
 WHERE (img1.article(+) = i.c1)
   AND (img2.article(+) = i.c2)
   AND (img3.article(+) = i.c3)
   AND (img4.article(+) = i.c4)
   AND (img5.article(+) = i.c5)
   AND (img6.article(+) = i.c6)
   AND (img7.article(+) = i.c7)
   AND (img8.article(+) = i.c8)
   AND (img9.article(+) = i.c9)
   AND (img10.article(+) = i.c10)
   AND (img11.article(+) = i.c11)
   AND (img12.article(+) = i.c12)
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 17h02   #6
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 213
Points : 4 213
Mais t'es un grand malade toi !!
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 17h05   #7
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,
Citation:
Envoyé par McM
Mais t'es un grand malade toi !!
Pourquoi?
Ça fonctionne pas ?
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 17h12   #8
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 213
Points : 4 213
Je vais t'avouer que j'ai pas essayé, je vais quand même faire un test.
Mais depuis, j'ai eu quelques modifications fonctionnelles (pas d'image mais afficher la case).
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 17h37   #9
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

J'espère que la vue répond à ton besoin .
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 00h11   #10
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 213
Points : 4 213
Pour info j'ai testé la requete sur 6 colonnes, puis je l'ai modifiée en celle ci
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
WITH IM AS (SELECT TRUNC ((ROWNUM - 1) / 6) x,
			        MOD (ROWNUM - 1, 6) + 1 y,
                article, img 
            FROM IMG ORDER BY x)
SELECT 
CASE WHEN img1.article IS NOT NULL THEN img1.img ELSE NULL END imag1, img1.article article1, 
CASE WHEN img2.article IS NOT NULL THEN img2.img ELSE NULL END imag2, img2.article article2,
CASE WHEN img3.article IS NOT NULL THEN img3.img ELSE NULL END imag3, img3.article article3,
CASE WHEN img4.article IS NOT NULL THEN img4.img ELSE NULL END imag4, img4.article article4,
CASE WHEN img5.article IS NOT NULL THEN img5.img ELSE NULL END imag5, img5.article article5,
CASE WHEN img6.article IS NOT NULL THEN img6.img ELSE NULL END imag6, img6.article article6
FROM /* La table img est pivoté en 12 colonnes, les cellules se sont des articles*/
(SELECT MAX (DECODE (y, 1, article)) c1,
        MAX (DECODE (y, 2, article)) c2,
        MAX (DECODE (y, 3, article)) c3,
        MAX (DECODE (y, 4, article)) c4,
        MAX (DECODE (y, 5, article)) c5,
        MAX (DECODE (y, 6, article)) c6
    FROM (SELECT ARTICLE, x, y FROM IM)
	GROUP BY x
	ORDER BY x
	)i,
/*les images de colonne 1*/
   (SELECT article, img FROM IM WHERE y=1 ) img1,
   (SELECT article, img FROM IM WHERE y=2 ) img2,
   (SELECT article, img FROM IM WHERE y=3 ) img3,
   (SELECT article, img FROM IM WHERE y=4 ) img4,
   (SELECT article, img FROM IM WHERE y=5 ) img5,
   (SELECT article, img FROM IM WHERE y=6 ) img6
WHERE img1.article(+) = i.c1
AND img2.article(+) = i.c2
AND img3.article(+) = i.c3
AND img4.article(+) = i.c4
AND img5.article(+) = i.c5
AND img6.article(+) = i.c6
Elle marche bien, le seul truc qui est gênant, c'est le multi-requetage sur la table IMG.

J'ai pas pu la tester dans mon écran (pas eu le temps).
Je ne sais pas quelle est la performance par rapport à 3 select avec les WHERE article in (:1,:2,:3,:4)


Cela dit en passant, j'ai réussi à trier mon select par rapport à mes paramètres
Clause where du bloc sur IMG
Code :
article IN (:p1, :p2, :p3, :p4)
Faut afficher le bloc dans l'ordre des articles :p1, :p2, :p3, :p4 (pas de dur pour éviter le reparse)
J'ai créé une colonne TRI en premier dans le bloc basé sur
Code :
DECODE(article, :p1,1, :p2,2, :p3,3, :p4,4)
Et le ORDER BY du bloc à 1 (Bloc sans DML autorisé, donc pas de rowid ramené)
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h01.


 
 
 
 
Partenaires

Hébergement Web