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 13/06/2007, 14h36   #1
Membre éclairé
 
Avatar de macben
 
Inscription : mars 2004
Messages : 526
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2004
Messages : 526
Points : 379
Points : 379
Envoyer un message via AIM à macben Envoyer un message via MSN à macben
Par défaut Créer un bloc "Interrogation de clause From"

Bonjour,

je souhaite baser un bloc sur une requête dont la clause FROM et WHERE sont amenées à être modifiées mais pas le SELECT.

J'ai donc pris "Interrogation de clause From", et mes questions sont :

Que doit contenir la propriété "Nom de la source d'interrogation" ? La requête entière ? Juste le FROM ?

Dans colonne source de données d'interrogation je mettrais donc les colonnes du SELECT avec l'alias de la table ?

et la clause WHERE dans "Clause Where" ?

Du coup après je voudrais mettre 3 champs textes pour mes 3 colonnes, je dois gérer ces 3 champs textes comme des champs non basés ? Et donc gérer manuellement le EXECUTE_QUERY, UPDATE, INSERT, etc ?

Merci pour toutes vos réponses.
MacBen
macben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 14h42   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
le problème c'est que le FROM ne peut pas être dynamique. Il faudrait que tu explique d'avantage le besoin.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 14h55   #3
Membre éclairé
 
Avatar de macben
 
Inscription : mars 2004
Messages : 526
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : mars 2004
Messages : 526
Points : 379
Points : 379
Envoyer un message via AIM à macben Envoyer un message via MSN à macben
Citation:
Envoyé par orafrance
le problème c'est que le FROM ne peut pas être dynamique. Il faudrait que tu explique d'avantage le besoin.
J'ai un écran qui présente 3 colonnes issues d'une table.

Et en fonction du choix fait par l'utilisateur sur un écran précédent, il faut que je rajoute des restrictions dans la clause WHERE, restrictions qui peuvent avoir des liens avec d'autres tables.

Ex : par défaut je fais

Code :
1
2
SELECT NOM_EMPLOYE, PRENOM_EMPLOYE, AGE_EMPLOYE
FROM EMPLOYES
Mais si l'utilisateur demande un filtre sur le département de l'employé il faut que je rajoute avant de faire l'EXECUTE_QUERY :

Code :
1
2
3
4
SELECT e.NOM_EMPLOYE, e.PRENOM_EMPLOYE, e.AGE_EMPLOYE
FROM EMPLOYES e, DEPARTMENTS d
WHERE e.ID_EMPLOYE = d.ID_EMPLOYE
AND d.NUM_DEPARTEMENT = '44'
Avec DEPARTEMENTS qui n'est pas la liste des départements mais qui contient le rattachement de chaque employé à un département.

Citation:
DEPARTMENTS : ID_EMPLOYE, ID_DERPARTEMENT, NUM_DEPARTEMENT
macben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 15h05   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
dans ce cas tu changeras le DEFAULT_WHERE ainsi :

Code :
1
2
3
4
5
6
SELECT e.NOM_EMPLOYE, e.PRENOM_EMPLOYE, e.AGE_EMPLOYE
FROM EMPLOYES e
WHERE e.ID_EMPLOYE IN (
                                    SELECT d.ID_EMPLOYE 
                                      FROM DEPARTMENTS d
                                    WHERE d.NUM_DEPARTEMENT = '44')
ou avec EXISTS
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 15h06   #5
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
2 solutions :
- soit tu gères ta requête différemment (clause exists ou in au lieu d'une jointure) et dans ce cas tu ne modifies que la clause where (=> pas besoin de passer par une clause from) et tu pourras mettre a jour les données sans rien avoir à modifier;


- soit il faut que tu modifies la propriété QUERY_DATA_SOURCE_NAME avec le built-in set_block_property :
Code :
1
2
ma_requete := 'select ... from ... where ...';
set_block_property ('monBlock', query_data_source_name, ma_requete);
Dans ce cas, si tu veux mettre a jour les données tu es obligé de renseigner les propriétés du noeud ADVANCED DATABASE de ton bloc.
__________________
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
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web