Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Reports
Reports Forum d'entraide sur Oracle Reports
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/07/2005, 18h02   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2005
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 59
Points : 12
Points : 12
Par défaut création de formulaire forms6

salut

je voudrai savoir si vous saviez ou je pourrais trouver un tuto expliquant comment créer un formulaire servant a intéroger une base oracle puis à afficher dans un second formulaire le résultat complet?

J'ai déjà crée le premier formulaire mais je ne sais aps comment faire pour intéroger la base, ou mettre le code PL/SQL qui me permettra d'avoir mon résultat

@++
dahu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2005, 18h07   #2
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Bonjour,

Vous pourriez déjà consulter le Guide Forms 9i/10g disponible dans la page Oracle -> Cours
http://sheikyerbouti.developpez.com/forms10g/
__________________
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 19/07/2005, 18h41   #3
Candidat au titre de Membre du Club
 
Inscription : juillet 2005
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 59
Points : 12
Points : 12
J'avais déjà regarder ce tuto mais j'y avais pas compris grand chose par rapport a ce que je recherche a faire ou c'est peut etre que j'ai pas bien regardé

J'avais essayé avec l'assistant mais il me laisse au meme point que j'était arrivé tout seul

Actuellement ce que je cherche a faire c'est une fois rentré les info dans 4 champs (ce sont tous les 4 des clés primaires de la meme table de la meme personne) je puisse faire 1 requète qui m'affiche toute la fiche de la personne dans une autre page
dahu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2005, 18h21   #4
Candidat au titre de Membre du Club
 
Inscription : juillet 2005
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 59
Points : 12
Points : 12
salut

J'ai regarder la page qui traite des bloc de donnée et j'arrive pas a trouver ce que je cherche, comment enregistrer dans des variables les données insérés dans des emplacements créé dans le formulaire.
Dans un bouquin que j'ai il utilise QUERY_PARAMETER('&paramètre') mais dans mon cas je ne sais pas comment faire

Et quand j'essaye les fichiers que tu donnes avec le tuto j'ai des erreurs lorsque je souhaite afficher 1 module qui sont surments à la différence entre mon forms6 et le form9

Je vien de parler de mon prob avec mon maitre de stage et en faite je me compliquait la vie comme moi je partai sur de la programmation alors qu'ici on utilise forms pour programmer le moins possible
Je vais donc devoir utiliser la fonction enter_query et execute_query

C'est compliqué de faire du Forms quand on n'en a jamais fait
dahu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2005, 08h10   #5
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
Citation:
Envoyé par dahu29
C'est compliqué de faire du Forms quand on n'en a jamais fait
C'est le genre d'outil qui nécessite une formation c'est évident

Pour affecter un champ à une variable :

Code :
mavariable := monblock.monitem;
tout simplement
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2005, 20h00   #6
Candidat au titre de Membre du Club
 
Inscription : juillet 2005
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 59
Points : 12
Points : 12
salut

J'ai avancé 1 peu mon histoire mais je suis partit avec 1 facon différente de celle que je voulais faire précédement

En faite dans mon formulaire, il y a 3 champs qui vont etre renseigner (3 clé primaire) et puis il a 1 quinzaine d'autre qui sont liés au 3 champs rentré et seront simplement affichés.
En cherchant un peu sur différent fichier forms qu'y a sur mon pc au buro j'ai trouvé 1 code qui me semble intéressent , on le place au niveau du premier champ rentré (il s'agit du numéro de la personne appellé NO_MAT dans le formulaire et la colonne s'appelle pareil dans la base) pour savoir si la personne existe dans la base
Lorsque j'essaye de le mettre a la sauce de ma base sa coince pourtant il est pas bien long
Je lui est demander d'afficher que 3 champs car j'avais la flemme d'écrire tout le reste
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
DECLARE
  CURSOR C IS SELECT NOM,PRENOM,CODE_CORPS
              FROM BULLETIN_7000
              WHERE NO_MAT=:BULLETIN_7000.NO_MAT;
 
BEGIN
  IF BULLETIN_7000.NO_MAT IS NOT NULL THEN
  OPEN C;
  FETCH C INTO :BULLETIN_7000.NOM,
                        :BULLETIN_7000.CODE_CORPS,
                        :BULLETIN_7000.PRENOM;
  IF C%NOTFOUND THEN
   MSG_ALERT('La personne n''existe pas ','I',TRUE);
  END IF;
  CLOSE C;
  END IF;
END;
Les erreurs se trouvent à chaque fois qu'il y a : avant le nom de ma table erreur 49 variable de lien erroné

pourtant cet algo me semble correct

@++
dahu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2005, 23h31   #7
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
mais t'as vu où qu'il y avait : avant le nom des variables ???

relis le tutoriel PL/SQL : http://oracle.developpez.com/guide/developpement/plsql/
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 10h23   #8
Candidat au titre de Membre du Club
 
Inscription : juillet 2005
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 59
Points : 12
Points : 12
Bonjour

J'ai modifié mon code en faisant comme dans le tuto de PL/SQL
Je me demandais pourquoi on met des LC% LN% sa set a quoi ces machins??

sinon mon code ressemble sa sa maintenant je l'ai alléger

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DECLARE
	LC$NOMAG BULLETIN_7000.NOM_AG%type;
 
  CURSOR C (LN$MAT IN BULLETIN_7000.NO_MAT%TYPE )IS
      SELECT NOM_AG
              FROM BULLETIN_7000
              WHERE NO_MAT= MAT;
 
BEGIN
  IF NAME_IN('BULLETIN_7000.NO_MAT') IS NOT NULL THEN
  OPEN C;
  FETCH C INTO           LC$NOMAG;
 
  IF C%NOTFOUND THEN
   MESSAGE('La personne n''existe pas ','I',TRUE);
  END IF;
  CLOSE C;
  END IF;
END;
Et j'ai encore plus d'erreur qu'avant y me dit qu'il faut que je déclare mes variables erreur 201 BULLETIN_7000.NOM_AG BULLETIN_7000.NO_MAT

sinon j'ai des erreurs d'item ignoré entre NOMAG BULLETIN et devant CURSOR

et encore plein d'autre erreur
dahu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 10h28   #9
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
Citation:
Envoyé par dahu29
J'ai modifié mon code en faisant comme dans le tuto de PL/SQL
Je me demandais pourquoi on met des LC% LN% sa set a quoi ces machins??
c'est "machin" sont des normes de nommage

L = Local, N = combre et C = caractère... ça permet de voir tout de suite à quel type de données on a affaire dans le code
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 10h29   #10
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
quels sont les items et blocs manipulé, et qu'est ce que tu cherches à faire ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 11h13   #11
Membre à l'essai
 
Inscription : juin 2005
Messages : 35
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2005
Messages : 35
Points : 23
Points : 23
il serait pas plus simple dans ton cas de faire de cette façon :

pour vérifier si la personne existe :
Code :
SELECT count(no_mat) FROM ta-TABLE WHERE no_mat = valeur_saisie
ainsi si le résultat de ta requete est 0 = la personne n'existe pas sinon oui, et tu n'as plus qu'à gérer les deux cas.

il me semble que cela est plus simple que d'utiliser un curseur
Junness est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 11h14   #12
Candidat au titre de Membre du Club
 
Inscription : juillet 2005
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 59
Points : 12
Points : 12
Je travaille sur la table BULLETIN_7000.
Je souhaite que lorsque la personne remplisse la case MAT (appellé NO_MAT dans la base) (elle entre son numéro de matricule) il y a un affichage du nom de l'agent dans la case NOMAG (NOM_AG dans la base)

Et puis la je comprend pas mes erreurs y me dise pour
Code :
1
2
 DECLARE
	LC$NOMAG BULLETIN_7000.NOM_AG%type;
erreur 201 ligne 2 colonne 11
L'identificateur 'BULLETIN_7000.NOM_AG' doit etre déclaré
erreur 0 ligne 2, colonne 11
Item ignored

Code :
CURSOR C (LN$MAT IN BULLETIN_7000.NO_MAT%TYPE )IS
Ensuite devant CURSOR:
Erreur 0 ligne 4, colonne 1
Item ignored

l'identificateur 'BULLETIN_7000.MAT' doit etre déclaré
Erreur 0 ligne 4, colonne 1
Item ignored

Devant Open:
erreur 306 ligne 11 colonne 3
numéro ou types d'arguments erronés dans appel à 'C'
erreur 0 ligne 11 colonne 3
SQL Statement ignored

après j'ai un erreur devant FETCH, LC$NOMAT et 2 autres devant message

J'espère avoir été assez clair
dahu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 11h23   #13
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
il y a un truc que tu ne sembles pas avoir compris. Si tu fais un bloc basé sur une table, les champs correspondent aux colonnes et si tu fais une mise à jour c'est FORMS qui s'en débrouille. Tu n'as aucun code à rajouter pour que la mise à jour soit faite en base
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 11h28   #14
Membre à l'essai
 
Inscription : juin 2005
Messages : 35
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2005
Messages : 35
Points : 23
Points : 23
je pense que tu n'as pas besoin d'utiliser un curseur :
ma solution :
bloc master : item MAT avec lov (liste des no_mat de la base)
bloc détail : item NOMAG affiché (affiche no_mag de la base)
beaucoup plus simple, enfin je crois ...

si tu préfère utiliser un curseur, alors je peux pas t'aider : j'ai toujours eut des problèmes avec l'utilisation de curseur donc j'essaie de m'en passer
Junness est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 12h06   #15
Candidat au titre de Membre du Club
 
Inscription : juillet 2005
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 59
Points : 12
Points : 12
J'arrète pas de m'embrouiller avec ce forms c énervant passer 1 journé sur un piste qui ne servira pas

apparament c'est donc un lov qu'il faut que je fasse ?

La personen qui s'occupe de moi m'avais parlé de faire un menu avec enter_query et execute_query, est ce que sa rejoint le lov ?

J'ai essayé de comprende a quoi sa servait dans mes livres et les tuto mais g pas bien compris

++
dahu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 12h08   #16
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
encore une fois, Forms est un outil qui nécessite au moins une petite formation de prise en main... c'est illusoire de penser pouvoir utiliser Forms que grace aux bouquins
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2005, 12h21   #17
Membre à l'essai
 
Inscription : juin 2005
Messages : 35
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2005
Messages : 35
Points : 23
Points : 23
la lov est liste alimenté par une requete. Il suffit d'indiquer dans ton item MAT que l'item doit etre alimenté par la lov. Ainsi l'utilisateur devrait choisir un no_mat existant dans la base (plus besoin de vérifier que le no_mat existe). Avec les bloc master/détail, forms actualisera l'item affichant le nom de la personne dès le choix de MAT fait.
lov : http://sheikyerbouti.developpez.com/...page=Chap11#LB
bloc master/détail : http://sheikyerbouti.developpez.com/...?page=Chap9#LA

voila moi aussi je suis en stage sur forms et reports : pas de formation non plus, heureusement que des personnes bien attentionnées ont rédigé un tutorial sur forms
Junness est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2005, 13h18   #18
Candidat au titre de Membre du Club
 
Inscription : juillet 2005
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 59
Points : 12
Points : 12
Merci beaucoup pour vos réponses

Je n'ai pas utilisé le système des LOV.
J'ai revu mon maitre de stage se matin et qui ma débloqué, en faite il fallait passer en mode enter_query puis taper se qu'on voulais chercher (ou ne rien mettre) puis lancer le execute_query et là tout se qui devait s'afficher dans toutes les cases se fait bien.

Sauf que comme c'est pas encore fini sa marche pas top, au premier lancement il m'avais affiché ce qu'il devait le faire mais il y avait un problème avec ces données donc on a du les supprimer de la table.

Maintenant si on laisse tous les champs vide ou qu'on tape le numéro de matricule le mois l'anné pour sélectionner une personne sa marche pas j'ai droit a une erreur

Code :
ORA-01722: Nombre non valide
J'ai vérifier le type de donnée la taille, .. de tous les champs et rien trouvé comme erreur.

Par contre si je rentre des informations erronés dans n'importe quelle champs y me dit que les informations sont fausses et qu'il faut resaisir.

si vous sauriez à quoi peut correspondre cette erreur??
dahu29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2005, 13h20   #19
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
vérifie si les propriètés de la clause WHERE sont OK. Commence par retrouver le trigger qui génére cette erreur et vérifie le code éventuellement
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2005, 13h39   #20
Candidat au titre de Membre du Club
 
Inscription : juillet 2005
Messages : 59
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 59
Points : 12
Points : 12
justement je regarde le code de la requète

La clause where n'est pas mise dedans comme je fait mes tests avec les champs vide (sa revient au meme que si je les remplissai ) normalement je devrai obtenir les données du premier matricule de la table.

Code :
1
2
3
SELECT 
ROWID,NO_MAT,MOIS_BUL,AN_BULL,NO_BUL
 FROM BULLETIN_7000
si j'essaye avec des données il me donne cette requète:

Code :
1
2
SELECT ROWID,NO_MAT,MOIS_BUL,AN_BULL,NO_BUL
 FROM BULLETIN_7000 WHERE (NO_MAT=:1) AND (MOIS_BUL=:2) AND (AN_BULL=:3)
dahu29 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 21h32.


 
 
 
 
Partenaires

Hébergement Web