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 19/03/2007, 12h38   #1
Invité régulier
 
Étudiant
Inscription : juin 2006
Messages : 58
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 9
Points : 9
Envoyer un message via Yahoo à samba2005kanoute
Par défaut requete select avec plusieurs tables

bonjour à tous,
j’ai un problème avec mon bouton rechercher.suite à la lecture des différents tutorial, je n'arrive pas à faire une requête avec plusieurs tables. Voici mon code exporté en sql :
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
CREATE TABLE BIEN 
 (
CODE_BIEN varchar2(10) constraint pk_CODE_BIEN PRIMARY KEY,
      NOM_BIEN varchar2(10),
      TYPE_BIEN varchar2(10),
      DESCRIPTION_BIEN varchar2(10),
      NUMERO_SERIE varchar2(10),
);
 
CREATE TABLE BON_ENTRE
(
   	NUM_BON_ENTRE varchar2(10) constraint pk_NUM_BON_ENTRE PRIMARY KEY,
   	 NOM_SERVICE varchar2(10)
);
 
CREATE TABLE BON_DE_SORTIE
(
  	NUM_BON_ENTRE varchar2(10) constraint pk_NUM_BON_ENTRE PRIMARY KEY,
  	NOM_SERVICE varchar2(10)
);
 
CREATE TABLE FIGURE
(
CODE_FIGURE varchar2(10) constraint pk_CODE_FIGURE PRIMARY KEY,
  	DATE_SORTIE date,
  	QTE_SORTIE number(20),
  	PRIX_SORTIE number(20),
  	 CODE_BIEN constraint FK_CODE_BIEN_FIGURE REFERENCES BIEN(CODE_BIEN)
 NUM_BON_SORTIE constraint FK_NUM_BON_SORTIE_FIGURE REFERENCES BIEN(CODE_BIEN)
 
);
CREATE TABLE EXSISTER
(
    	CODE_EXSISTER  varchar2(10) constraint pk_CODE_EXSISTER PRIMARY KEY,
 	 DATE_ENTRE date,
  	QTE_ENTRE number(20),
  	PRIX_ENTRE number(20),
CODE_BIEN constraint FK_CODE_BIEN_EXSISTER REFERENCES BIEN(CODE_BIEN)
NUM_BON_ENTRE constraint FK_NUM_BON_SORTIE_EXSISTER REFERENCES BIEN(CODE_BIEN));
J’ai fait le bouton avec WHEN-BUTTON-PRESSED puis j’ai écris le code sql qui est :
Citation:
Select BIEN.CODE_BIEN, NOM_BIEN, EXSISTER.NUM_BON_ENTRE, DATE_ENTRE, QTE_ENTRE,FIGURER.NUM_BON_SORTIE,QTE_SORTIE,DATE_SORTIE
INTO :BIEN.CODE_BIEN, :BIEN.NOM_BIEN, :EXSISTER.NUM_BON_ENTRE, :EXSISTER.DATE_ENTRE, :EXSISTER.QTE_ENTRE,:FIGURER.NUM_BON_SORTIE,:FIGURER.QTE_SORTIE,:FIGURER.DATE_SORTIE
FROM BIEN, EXSISTER,FIGURER
where BIEN.CODE_BIEN = EXSISTER.CODE_BIEN
AND BIEN.CODE_BIEN = FIGURER.CODE_BIEN
AND BIEN.CODE_BIEN like :BIEN.CODE_BIEN;
NB : Apres avoir écris le script lorsqu’on clique sur compile machine ne montre pas d’erreurs, mais si compile le forms et qu’on donne un numéro déjà saisie dans le zone de texte code_bien et puis on clique sur le bouton rechercher il n’afficher rien.
samba2005kanoute est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 13h17   #2
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Merci de signaler votre version d'oracle, les outils que vous utilisez ainsi que la version de ceux-ci.

Cela devient fatiguant de vous le demander à chacun de vos posts. Merci à l'avenir de faire un minimum d'effort si vous souhaitez avoir des réponses.
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 13h30   #3
Invité régulier
 
Étudiant
Inscription : juin 2006
Messages : 58
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 9
Points : 9
Envoyer un message via Yahoo à samba2005kanoute
Citation:
Envoyé par plaineR
Merci de signaler votre version d'oracle, les outils que vous utilisez ainsi que la version de ceux-ci.

Cela devient fatiguant de vous le demander à chacun de vos posts. Merci à l'avenir de faire un minimum d'effort si vous souhaitez avoir des réponses.
Mille milliards d’excuses si ma question à été mal pose. Voilà j’ai oracle 9 i 2 versions et froms 9 i 2 version.
Merci.
samba2005kanoute est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 13h36   #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
Bonjour,

Si tu cherches la chaine qui contient :bien.code_bien donc il faut rajouter '%'
Code :
1
2
 
AND bien.code_bien LIKE '%'||:bien.code_bien;
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 13h55   #5
Invité régulier
 
Étudiant
Inscription : juin 2006
Messages : 58
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 9
Points : 9
Envoyer un message via Yahoo à samba2005kanoute
Citation:
Envoyé par salim11
Bonjour,

Si tu cherches la chaine qui contient :bien.code_bien donc il faut rajouter '%'
AND bien.code_bien LIKE '%'||:bien.code_bien;
Je vis d’utilise le scripte que vous m'aviez demande d'utilise, mais lorsqu'on clique sur le bouton rechercher dans le formulaire en mode saisir il n'affiche aucun résultat.
Pour plus de précision voici le scripte a nouveau.
Code :
1
2
3
4
5
6
SELECT BIEN.CODE_BIEN, NOM_BIEN, EXSISTER.NUM_BON_ENTRE, DATE_ENTRE, QTE_ENTRE,FIGURER.NUM_BON_SORTIE,QTE_SORTIE,DATE_SORTIE
INTO :BIEN.CODE_BIEN, :BIEN.NOM_BIEN, :EXSISTER.NUM_BON_ENTRE, :EXSISTER.DATE_ENTRE, :EXSISTER.QTE_ENTRE,:FIGURER.NUM_BON_SORTIE,:FIGURER.QTE_SORTIE,:FIGURER.DATE_SORTIE
FROM BIEN, EXSISTER,FIGURER
WHERE BIEN.CODE_BIEN = EXSISTER.CODE_BIEN
AND BIEN.CODE_BIEN = FIGURER.CODE_BIEN
AND bien.code_bien LIKE '%'||:bien.code_bien;
samba2005kanoute est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 13h57   #6
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
As-tu essayé ta requête sous SQL*Plus ?

Pourquoi utilises-tu un like ? Cela me semble risqué, car si tu as plusieurs valeurs, tu auras une exception too_many_rows à l'exécution.
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 13h59   #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
Par défaut Remarque

Bonjour,

Je comprends pas une chose pourquoi tu veux faire le travail de forms.

Tu as qu'a mettre dans le pre_query tes conditions et tu fais un execute_query :

Code :
1
2
3
4
 
set_block_property('bien',default_where,' code_bien LIKE ''%''||:bien.code_bien');
ou 
set_block_property('bien',default_where,' code_bien LIKE :bien.code_bien||''%''');
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 15h03   #8
Invité régulier
 
Étudiant
Inscription : juin 2006
Messages : 58
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 9
Points : 9
Envoyer un message via Yahoo à samba2005kanoute
Citation:
Envoyé par salim11
Bonjour,

Je comprends pas une chose pourquoi tu veux faire le travail de forms.

Tu as qu'a mettre dans le pre_query tes conditions et tu fais un execute_query :

Code :
1
2
3
4
 
set_block_property('bien',default_where,' code_bien LIKE ''%''||:bien.code_bien');
ou 
set_block_property('bien',default_where,' code_bien LIKE :bien.code_bien||''%''');
Vous pouvez me dire comment faire pour utilise
Citation:
set_block_property
merci
samba2005kanoute est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 15h21   #9
Membre éclairé
 
Inscription : décembre 2004
Messages : 349
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2004
Messages : 349
Points : 367
Points : 367
Citation:
Envoyé par samba2005kanoute
Vous pouvez me dire comment faire pour utilise
merci
Il est à noter que tu fais beaucoup d'efforts, tant sur l'expression de ta demande, que sur l'apprentissage d'Oracle Forms.

Néanmoins, je pense que plutôt que de vouloir en faire qu'à ta tête et essayer de ré-écrire toute la partie transactionelle de FORMS, tu devrais te mettre au point sur la partie maitre-détail et sur les Foreign_Keys tel que je te l'avais déja suggéré.

Lors de l'un de tes derniers post, tu positionnais du code dans un bouton pour ajouter un enregistrement à un bloc basé !!! il faut que tu saches, que Oracle Forms n'a pas besoin de ce code pour ajouter un enregistrement.

Essaies de lire cette doc, de la comprendre et sutout de mettre ton apprentissage en application , sinon autant p....r dans un violon ...Oracle Forms

A propos, EXSISTER s'écrit EXISTER .

CDLT.
taska est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 15h26   #10
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
Bonjour,

Désolé,Il faut créer un champs non basé pour effectuer la recherche
code_bien_rechercher
Code :
1
2
3
4
5
6
7
 
 
set_block_property('bien',default_where,' code_bien 
LIKE ''%''||:bien.code_bien_rechercher);
ou 
set_block_property('bien',default_where,' code_bien 
LIKE :bien.code_bien_rechercher||''%''');
Ou bien tu n'as meme pas besoin de ce code, tu presses sur enter_query tu mets le '%' avec le bout de la chaine que tu cherches et tu fais un execute_query
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 15h29   #11
Membre éclairé
 
Inscription : décembre 2004
Messages : 349
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2004
Messages : 349
Points : 367
Points : 367
Citation:
Envoyé par salim11
tu n'as meme pas besoin de ce code,
Ca ! c'est nettement mieux ....


CDLT.
taska est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 15h45   #12
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
Bonjour
Code :
1
2
 
Ca ! c'est nettement mieux ....
ca depend de tes besoin si tu as un ecran de recherche des code de bien
alors tu n'auras pas le choix de mettre le code avec un execute_query dans un boutton de rechrche .
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 15h46   #13
Invité régulier
 
Étudiant
Inscription : juin 2006
Messages : 58
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 9
Points : 9
Envoyer un message via Yahoo à samba2005kanoute
Citation:
Envoyé par taska
Ca ! c'est nettement mieux ....


CDLT.
Vous savez je suis nouveau dans oracle je ne maîtrise pas bien raison pour laquelle je vous demande de me dire comment faire pour pouvoir l'utilise. Je ne sais même pas si on doit le mettre à l’intérieur d’un bouton ou dans et un déclencheur.

Merci.
samba2005kanoute est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 15h58   #14
Membre éclairé
 
Inscription : décembre 2004
Messages : 349
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2004
Messages : 349
Points : 367
Points : 367
.. je sais bien , mais tant que tu n'auras pas compris le maitre-détail, tu ne pourras pas progresser ( ici on dit : il ne faut pas mettre la charrue avant les boeufs ... )

CDLT.
taska est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 16h14   #15
Invité régulier
 
Étudiant
Inscription : juin 2006
Messages : 58
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 9
Points : 9
Envoyer un message via Yahoo à samba2005kanoute
Citation:
Envoyé par taska
.. je sais bien , mais tant que tu n'auras pas compris le maitre-détail, tu ne pourras pas progresser ( ici on dit : il ne faut pas mettre la charrue avant les boeufs ... )

CDLT.
Je me suis fais mal compris, je sais faire la différence entre une table maître une détaille mais mon problème est de savoir ou je dois utilise scripte set_block_property et comment l’utilise dans mon cas.
Merci.
samba2005kanoute est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 16h33   #16
Membre éclairé
 
Inscription : décembre 2004
Messages : 349
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2004
Messages : 349
Points : 367
Points : 367
Citation:
Envoyé par samba2005kanoute
je sais faire la différence entre une table maître une détaille
Non! je parle de RELATION

Citation:
ou je dois utilise scripte set_block_property
!!! c'est du code, alors tu le mets où tu veux :
- un trigger,
- une procédure,
- une fonction,
- une bibliothèque
etc ..

( Sur le noyau, cela ne fonctionnera pas !! )

CDLT.
taska est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 17h29   #17
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Il me semble qu'on dévie du problème initial, non ?

Peux-tu nous dire précisément ce que tu veux faire ?
- ta requête qui fait la jointure entre 2 tables te ramène combien d'enregistrements (un ou plusieurs) ?
- le résultat de cette requête est en affichage seulement ou en modification ?
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 17h44   #18
Invité régulier
 
Étudiant
Inscription : juin 2006
Messages : 58
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 9
Points : 9
Envoyer un message via Yahoo à samba2005kanoute
Citation:
Envoyé par taska
Non! je parle de RELATION



!!! c'est du code, alors tu le mets où tu veux :
- un trigger,
- une procédure,
- une fonction,
- une bibliothèque
etc ..

( Sur le noyau, cela ne fonctionnera pas !! )

CDLT.
vous savez je n'arriver pas à comprendre. mais je sais que c'es pas un problème de relation. J'ai exécute le scripte PLSQL ça marcher correctement, mais si je reviens sur le forms en mode saisie et que je saisie un donne qui se trouve déjà dans base puis en cliquant sur le bouton rechercher rien ne s'affiche.
Merci
samba2005kanoute est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 17h49   #19
Membre éclairé
 
Inscription : décembre 2004
Messages : 349
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2004
Messages : 349
Points : 367
Points : 367
Citation:
Envoyé par samba2005kanoute
mais si je reviens sur le forms en mode saisie et que je saisie un donne qui se trouve déjà dans base puis en cliquant sur le bouton rechercher rien ne s'affiche.
Merci
1. Le bloc est-il basé ?
2. La saisie respecte-elle la casse ?
3. N'a t-on pas oublié les % ?
4. Est-on en mode Interrogation et non pas en mode Ajout ( saisie ) ?


CDLT.
taska est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 18h21   #20
Invité régulier
 
Étudiant
Inscription : juin 2006
Messages : 58
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 9
Points : 9
Envoyer un message via Yahoo à samba2005kanoute
Citation:
Envoyé par taska
1. Le bloc est-il basé ?
2. La saisie respecte-elle la casse ?
3. N'a t-on pas oublié les % ?
4. Est-on en mode Interrogation et non pas en mode Ajout ( saisie ) ?


CDLT.
1.le bloc est base
2.La saisie respete la case
3.je ne passe pas avoir oublier %
4.le bloc est en mose intorogation
samba2005kanoute 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 09h41.


 
 
 
 
Partenaires

Hébergement Web