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 07/07/2008, 16h36   #1
Nouveau Membre du Club
 
Avatar de Devlop++
 
Inscription : avril 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2006
Messages : 86
Points : 26
Points : 26
Par défaut Chargement de photo en cas de son abscence

Salut,
Excusé l'intitulé de la discussion j'ai pas trouvé un plus proche du sujet.

Mon problème est peut etre de catégorie SQL, mais je poste en FORMS car la solution que je cherche est au niveau d’un item image basé sur un LONG RAW.
Je m’explique :
J’ai trois table : DEPT, EMP et PHOTO

DEPT( DEPTNO NUMBER(2), DNAME VARCHAR2(14), LOC VARCHAR2(13) )
EMP( EMPNO NOT NULL NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) )
PHOTO( ID NOT NULL NUMBER(7) , DESC VARCHAR2(30), TYPE VARCHAR2(30), BLOB NOT NULL LONG RAW, EMPNO NOT NULL NUMBER(4) )

DEPT( DEPTNO , DNAME , LOC )
EMP( EMPNO , ENAME , JOB , MGR , HIREDATE , SAL , COMM , DEPTNO )
PHOTO( ID , DESC , TYPE , BLOB , EMPNO )

Les tables contiennent respectivement : données du département, données de l’employé et photos des employés plus une photo spéciale (cliché vide identifié par ID = 0 et EMPNO = 0 qui contient le texte « Photo Non Disponible »). La table photo contient des images insérer par read_image_file().

J’ai crée une vue comme suit :
Code :
1
2
3
4
   CREATE OR REPLACE VIEW PH_VIEW_DEPT (V_EMPNO, V_DEPTNO, V_ID, V_BLOB)  AS 
   SELECT  EMP.EMPNO, EMP.DEPTNO, PHOTO.ID, PHOTO.BLOB
  FROM PHOTO,EMP
   WHERE (     EMP.EMPNO = PHOTO.EMPNO(+)  )  WITH READ ONLY

PH_VIEW_DEPT (
V_EMPNO, V_DEPTNO, V_ID, V_BLOB )
NB:
“EMP.EMPNO = PHOTO.EMPNO(+)” pour ramené aussi les agents qui n’ont pas de photo (je crois jointure externe)

Au niveau forms :
J’ai crée deux blocs : BLOCK_DEPT (Maitre) basé sur la table DEPT, et un autre BLOCK_VIEW (Detaille) basé sur la vue PH_VIEW_DEPT.
BLOCK_DEPT affiche 1 seul enregistrement, BLOCK_VIEW affiche 5 enregistrements avec l’orientation et la barre de défilement en horizontale.
J’exécute mon module et j’interroge un enregistrement de BLOCK_DEPT: impeccable, il me rend le département et tous ses employés éventuellement avec photo pour chacun (si il trouve une photo correspondante) sinon l’item :BLOCK_VIEW.V_BLOB de celui qui n’a pas de photo reste vide.
Mon problème est comment je peux faire pour ramené le cliché spécial portant ID = 0 et EMPNO = 0 pour le visualisé en cas l’employé n’as pas encore de photo a la place d’avoir l’item image vide.

J’ai pensé à un DECODE dans code de la vue du genre :
Code :
1
2
3
4
5
   CREATE OR REPLACE VIEW PH_VIEW_DEPT (V_EMPNO, V_DEPTNO, V_ID, V_BLOB)  AS 
   SELECT  EMP.EMPNO, EMP.DEPTNO, PHOTO.ID,
   decode(PHOTO.BLOB,NULL,'pas de photo', PHOTO.BLOB)
  FROM PHOTO,EMP
   WHERE (     EMP.EMPNO = PHOTO.EMPNO(+)  )  WITH READ ONLY
Mais je tombe sur ORA-00997: illegal use of LONG datatype.

Aussi au niveau de l'item image par déclencheur, mais je me suis coincé par le choix du déclencheur approprié et comment je verifié que l'item est vide ou null et est ce que BLOCK_VIEW en mode query va me permettre d'éditer par un :
Code :
 SELECT blob INTO :BLOCK_VIEW.V_BLOB FROM photo WHERE id = 0 AND empno = 0
Je doute de cela car en compilant, ce verbe select me renvoit "bad bind variable :BLOCK_VIEW.V_BLOB.

Auriez-vous programmé quelque chose de ce genre?
Peut être mon choix d'interrogation basé sur une vue est le problème et qu'il faut faire autrement, j'ai essayé par Maitre-Détail-Détail avec trois block sur les trois table mais même résultat avec un problème de navigation en plus.

Prière de ne pas me suggérer d'inserer les employés (n'ayant pas de photo) avec le cliché spécial, je veux avoir seulement les employés ayant une photo dans la table photo.

Merci pour votre aide.
Devlop++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2008, 14h50   #2
Nouveau Membre du Club
 
Avatar de Devlop++
 
Inscription : avril 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2006
Messages : 86
Points : 26
Points : 26
Peut être j'ai mal explique mon problème, ou que la solution est coriace.
Je suis toujours en attente de votre aide.
Merci.
Devlop++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2008, 15h14   #3
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 534
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 534
Points : 6 471
Points : 6 471
Tout ce que je puis dire c'est que vous ne pouvez pas faire un select BLOB into depuis Forms.
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2008, 11h41   #4
Nouveau Membre du Club
 
Avatar de Devlop++
 
Inscription : avril 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2006
Messages : 86
Points : 26
Points : 26
Je suis d'accord, les item images ne ramène que un champs blob ou long raw basé suite a une interrogation execute_query ou via la fonction read_image_file() d'un fichier sur l'OS.
Comment pourrai-je modifié le verbe select de ma vue
Code :
1
2
3
4
CREATE OR REPLACE VIEW PH_VIEW_DEPT (V_EMPNO, V_DEPTNO, V_ID, V_BLOB)  AS 
   SELECT  EMP.EMPNO, EMP.DEPTNO, PHOTO.ID, PHOTO.BLOB
  FROM PHOTO,EMP
   WHERE (     EMP.EMPNO = PHOTO.EMPNO(+)  )  WITH READ ONLY
pour avoir les photos des employé : ceux qui ont des photos dans la table, en plus si l'employé n'as pas de photos l'interrogation ramène l'image vide (qui est aussi dans la table : id =0 & EMPNO = 0)
pour avoir en interoggent PH_VIEW_DEPT par "select *" :

7100, 10, 1, 4 (son image)
7101, 10, 1, 4 (son image)
7102, 10, 1, 4 (le cliché vide)
7200, 20, 1, 4 (le cliché vide)
7201, 20, 1, 4 (son image)
7202, 20, 1, 4 (son image)
7203, 20, 1, 4 (le cliché vide)

le cliché vide : c'est une photos avec un fond blanc, est un texte qui montionne pas de photos encore.
Devlop++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2008, 13h58   #5
Nouveau Membre du Club
 
Avatar de Devlop++
 
Inscription : avril 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2006
Messages : 86
Points : 26
Points : 26
Salut,
Je viens de poster sur le sous-forum SQL, je croit que le problème pourrait aussi être résolue au niveau de la vue en ramenant dans cette dernière ce cliché pour les employé n'ayant pas de photos. Ainsi l' execute_query ramènerait dans l'item image le cliché vide.

Merci.
Devlop++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 12h19   #6
Nouveau Membre du Club
 
Avatar de Devlop++
 
Inscription : avril 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2006
Messages : 86
Points : 26
Points : 26
Je déleste ce thread, au profit de celui là : http://www.developpez.net/forums/sho...14#post3470714
Devlop++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h03.


 
 
 
 
Partenaires

Hébergement Web