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 12/05/2005, 14h52   #1
Invité de passage
 
Inscription : août 2004
Messages : 15
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 15
Points : 2
Points : 2
Par défaut [FORMS][6i] Erreur non explicitée

Salut a tous,

J'ai le message suivant :
Citation:
FRM-40735:le declencheur WHEN-BUTTON-PRESSED
a detecte une exception ORA-06502 non traitee.
Le message survient lorsque j'excute une form et que je clic sur un boutton pour executer le code suivent :

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
PROCEDURE test IS
BEGIN
declare
	mat varchar2(7);
	mt number;
	date_jour1 date;
	in_file Text_IO.File_Type;
	tampligne  VARCHAR2 (80);
  begin
 
      in_file:=Text_IO.Fopen('c:\vers_syspai\precompte.txt','r');
      loop
         Text_IO.Get_Line(in_file,tampligne);
 
         IF tampligne IS NULL then
            exit;
         else
            mat:= recherche(tampligne,1,';');
            mt:=recherche(tampligne,2,';');
            date_jour1:=recherche(tampligne,3,';');
            INSERT INTO fichier_precompte(MATRICULE_PARTICIPANT,MONTANT_PRECOMPTE,DATE_PRECOMPTE)
     	VALUES (mat,mt,date_jour1);
         end IF;      				 
      end loop;
    EXCEPTION
    WHEN no_data_found THEN
       	Text_IO.Fclose(in_file);
    when too_many_rows then 
            message('plusieurs enregistrements');    	
    commit;
 end;
END;
A mon avis le message survient apres l'instruction : Text_IO..Get_Line...
Que peut vouloir signifier ce message?
badara1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 15h03   #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
Etes-vous sûr que la variable templigne (varchar2(80)) est suffisament dimentionnée ? pas de lignes de plus de 80 caractères dans votre fichier ?
__________________
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 12/05/2005, 15h26   #3
Invité de passage
 
Inscription : août 2004
Messages : 15
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 15
Points : 2
Points : 2
la ligne de mon fichier compte exactement 21 caracteres. J'ai mis volontairement templigne a 80.
badara1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 15h31   #4
Membre habitué

 
Avatar de Nounoursonne
 
Inscription : mai 2002
Messages : 257
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 257
Points : 145
Points : 145
peux t'on avoir le details de la fonction recherche ()
Nounoursonne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 15h42   #5
Invité de passage
 
Inscription : août 2004
Messages : 15
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 15
Points : 2
Points : 2
Voila le code de la fonction recherche :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
FUNCTION Recherche (PC$Chaine IN varchar2,PN$Pos IN PLS_INTEGER,
PC$Sep IN varchar2 DEFAULT ';') RETURN varchar2 IS
LC$Chaine varchar2(32767):=PC$Sep||PC$Chaine;
LI$I PLS_INTEGER;
LI$I2 PLS_INTEGER;
BEGIN
  LI$I:= INSTR(LC$Chaine,PC$Sep,1,PN$Pos);
  message ('extraction',LI$I);
  IF LI$I > 0 then
  	 LI$I2:=INSTR(LC$Chaine,PC$Sep,1,PN$Pos+1);
  	 message ('extraction',LI$I2);
  	 IF LI$I2 = 0 then
  	 	  LI$I2:=LENGTH(LC$Chaine)+1;
  	 End IF;
     RETURN(SUBSTR(LC$Chaine,LI$I+1,LI$I2-LI$I-1));
     message ('extraction',LC$Chaine);
  else   
     RETURN NULL;
  End IF;   	 	
END;
badara1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 15h50   #6
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
Probablement un problème de conversion, peut-être votre variable mt de type number.

Afficher chaque valeur retournée par votre fonction recherche()
Vous verrez vite d'où vient le problème.
__________________
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 12/05/2005, 16h24   #7
Invité de passage
 
Inscription : août 2004
Messages : 15
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 15
Points : 2
Points : 2
j'ai essaye avec la fonction suivante, mais j'obtiens le meme message :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PROCEDURE testons IS
BEGIN
	declare
	mat varchar2(7);
	mt number;
	jour1 varchar2(9);
	begin
     mat:= recherche('100/A;18500;09-MAI-05',1,';');
     message('premiere valeur',mat);
     mt:=recherche('100/A;18500;09-MAI-05',2,';');
     message('deuxieme valeur',mt);
     jour1:=recherche('100/A;18500;09-MAI-05',3,';');
     message('troisieme valeur',jour1);
  end;    		
END;
badara1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 16h36   #8
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
Le code est correct
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
Connecté à :
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
WITH the Partitioning, OLAP AND Oracle DATA Mining options
JServer Release 9.2.0.5.0 - Production
 
SQL> SET serveroutput ON
SQL> DECLARE 
  2    mat VARCHAR2(7); 
  3    mt NUMBER; 
  4    jour1 VARCHAR2(9); 
  5  BEGIN 
  6    mat:= Split('100/A;18500;09-MAI-05',1,';'); 
  7    dbms_output.put_line(mat); 
  8    mt:=Split('100/A;18500;09-MAI-05',2,';'); 
  9    dbms_output.put_line(mt); 
 10    jour1:=Split('100/A;18500;09-MAI-05',3,';'); 
 11    dbms_output.put_line(jour1); 
 12  END; 
 13  /
100/A
18500
09-MAI-05
 
Procédure PL/SQL terminée avec succès.
 
SQL>
A un moment ou un autre, vous devez avoir une valeur en dépassement de capacité dans mat ou mt ou jour1.
__________________
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 12/05/2005, 16h48   #9
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
N'est-ce pas la fonction recherche qui pose problème ?
__________________
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 12/05/2005, 20h15   #10
Invité de passage
 
Inscription : août 2004
Messages : 15
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 15
Points : 2
Points : 2
c'est bien possible.
D'autre part je soupconne aussi la fonction test au niveau de l'instruction Text_IO.Get_File...
badara1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 21h15   #11
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
Je persiste à croire que le fichier plat (les lignes) contient des valeurs soit trop longues pour la/les variables de réception, soit un nombre réel qui dépasse la capacité de la variable NUMBER()
__________________
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 12/05/2005, 21h22   #12
Invité de passage
 
Inscription : août 2004
Messages : 15
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 15
Points : 2
Points : 2
voila ci-dessous le contenu reel de mon fichier qui est un fichier juste de teste et qui reflete exactement le contenu du fichier qui sera exploite:

100/A;18500;09-MAI-05
200/B;14000;09-MAI-05
300/C;25000;09-MAI-05
400/S;12000;09-MAI-05
600/E;12000;09-MAI-05
100/A;18500;12-MAI-05
200/B;14000;12-MAI-05
300/C;25000;12-MAI-05
400/S;12000;12-MAI-05
600/E;12000;12-MAI-05

vous voyez bien...
badara1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 21h40   #13
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
C'est effectivement très bizarre !!!

savez-vous sur quelle ligne vous tombez en erreur ?
__________________
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 12/05/2005, 21h45   #14
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
Ne serait-ce pas tout simplement le format date qui ne correspond pas à celui attendu...

et si vous essayez :
Code :
date_jour1 := To_date(recherche(tampligne,3,';') ,'DD-MONTH-YY' );
:
__________________
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 13/05/2005, 09h09   #15
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
Pour être sûr que cela ne vient de text_io.get_line, déclare ta variable en varchar2(1000)

Mais je suis convaincu que cela ne vient pas de là, puisque tu as la même erreur dans testons et tu ne fais de text_io.get_line

Que se passe-t-il si tu déclares toutes tes variables qui réceptionnent le résultat de recherche en varchar2(100) par exemple ?
__________________
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 13/05/2005, 10h56   #16
Invité de passage
 
Inscription : août 2004
Messages : 15
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 15
Points : 2
Points : 2
Merci beaucoup a tous, ca passe correctement maintenant.
C'est tres gentil...
badara1 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 03h38.


 
 
 
 
Partenaires

Hébergement Web