Skip to Main Content

Oracle Forms

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

"Please acknowledge" message with webutil

Luca GentiliDec 17 2009 — edited Dec 18 2009
Hi all,I'm using webuti library to create an excel file... when I deploy it on the server as soon as I execute the following code I get a "please acknowledge" message.
My client's oracle assistance group just told me that "this is an issue a consultant should know per sé" so they corrected the form and didn't tell me what they did (yeah I'm working in a highly collaborative environment).

here's the code, I didn't translate the variable names and so on... please forgive me for that:D
 	-- cursore dati OUTPUT
    CURSOR c_cur IS
				select * from processi;
			
		    rec 	c_cur%rowtype;

 
 -- Oggetti OLE
   XlApp		client_ole2.OBJ_TYPE;
   args			client_ole2.LIST_TYPE;
   wkbook		client_ole2.OBJ_TYPE;
   wksheet	client_ole2.OBJ_TYPE;
   wksheets	client_ole2.OBJ_TYPE;
   wkbooks	client_ole2.OBJ_TYPE;
   cell			client_ole2.OBJ_TYPE;
 --  font			client_ole2.OBJ_TYPE;
   border		client_ole2.OBJ_TYPE;
   args1 client_ole2.LIST_TYPE;
   cols client_ole2.LIST_TYPE;
   
 -- contatori di riga e colonna
   riga number(4);
   colonna number(4);

 -- varie
   temp_dir varchar2(100); -- directory temp di lavoro
   file_name varchar2(100);
   num_righe number;
   
   
 -- costanti
	 FONT_BOLD constant boolean := true;
	 
	 
	 
	 /*******************************************************************/
	 procedure scrivi_cella (r in number, c in out number, val in varchar2, bold in boolean :=false) IS
	 BEGIN
	 		 	
	 		args := client_ole2.CREATE_ARGLIST; 
	 		client_ole2.ADD_ARG(args, r); 
			client_ole2.ADD_ARG(args, c);
			cell := client_ole2.GET_OBJ_PROPERTY(wksheet,'Cells', args);
			client_ole2.set_property(cell, 'Value', val);
			--font := client_ole2.GET_OBJ_PROPERTY (cell, 'Font'); 
			--client_ole2.set_property (font, 'Bold', bold);  --> commentato perché non funziona in client_ole2
			border := client_ole2.GET_OBJ_PROPERTY (cell, 'Borders');
			client_ole2.set_property(border, 'LineStyle', 1); 
				 				
		
		
			client_ole2.DESTROY_ARGLIST(args); 
			client_ole2.release_obj(cell);
			client_ole2.release_obj(border);

			c:=c+1;

	 END scrivi_cella;
	 /*******************************************************************/
	 

	 
begin	    
	
			set_application_property(cursor_style,'BUSY');
	    :elaborazione:='Attenzione: è in corso il download degli output su file excel.'||chr(10)
	                 ||'L''operazione può richiedere alcuni minuti, si consiglia di non'
	                 ||chr(10)||'chiudere l''applicazione.';
	                 
	    synchronize;
      
      
	    select count(1) 
	      into num_righe
	    	from output a, r54_arif_arif b, sostitui c, modalita_forn d, r8_t_ente e, r7_t_archivio f, 
					  	 tipo_fornitore g
			 where b.id_periodo = a.id_periodo
         and b.id_processo = a.id_processo
			   and nvl(a.flag_cancellato,0) != 1
				 and c.cod_sostitui = a.cod_sostitui
				 and d.cod_modal_forn = a.cod_modal_forn
				 and e.codice_ente = a.cod_ente
				 and f.codice_archivio = a.cod_archivio
				 and g.cod_fornitore = a.cod_fornitore;
	    	    				
	    

	
	
			-- DEFINIZIONI OGGETTI OLE
			XlApp := client_ole2.create_obj ('Excel.Application'); 
			client_ole2.set_property (XlApp, 'Visible', false); 
			wkbooks := client_ole2.GET_OBJ_PROPERTY (XlApp, 'Workbooks'); 
			wkbook := client_ole2.invoke_obj (wkbooks,'Add'); 
			wksheets := client_ole2.GET_OBJ_PROPERTY (wkbook, 'Worksheets'); 
			--wksheet := client_ole2.GET_OBJ_PROPERTY (wksheets, 'ActiveSheet'); 
			wksheet := client_ole2.invoke_obj (wksheets,'Add');  --> Aggiunge un nuovo sheet
			client_ole2.set_property (wksheet,'Name','Output'); 

  
 			-- RIGA DI INTESTAZIONE
 			riga:=1;
 			colonna:=1;        
			scrivi_cella(riga,colonna,'ID PROCESSO',FONT_BOLD);	 
			scrivi_cella(riga,colonna,'TIPO PROCESSO',FONT_BOLD);	
			scrivi_cella(riga,colonna,'DENOM. PROCESSO',FONT_BOLD);	
			scrivi_cella(riga,colonna,'ANNO RIFERIMENTO',FONT_BOLD);
			scrivi_cella(riga,colonna,'VINCOLI TEMPORALI',FONT_BOLD);	
			
			scrivi_cella(riga,colonna,'SOSTITUIBILITÀ',FONT_BOLD);	
			scrivi_cella(riga,colonna,'MODAL. FORNITURA',FONT_BOLD);	
			scrivi_cella(riga,colonna,'NOME ENTE',FONT_BOLD);	
			scrivi_cella(riga,colonna,'TIPO ENTE',FONT_BOLD);	
			scrivi_cella(riga,colonna,'NOME ARCHIVIO',FONT_BOLD);	
			
			scrivi_cella(riga,colonna,'FORNITORE',FONT_BOLD);	
			scrivi_cella(riga,colonna,'SIGLA DIREZIONE',FONT_BOLD);	
			scrivi_cella(riga,colonna,'SIGLA STRUTTURA',FONT_BOLD);	
			scrivi_cella(riga,colonna,'STATO',FONT_BOLD);	
			
 		
			OPEN c_cur;			
			LOOP
							 
					colonna:=1;
					riga:=riga+1; 					 
				  fetch c_cur into rec;
				  exit when c_cur%NOTFOUND;    
					        							
						scrivi_cella(riga,colonna,rec.id_processo);	 
						scrivi_cella(riga,colonna,rec.sigla);	 		
						scrivi_cella(riga,colonna,rec.denom_proces);	 
						scrivi_cella(riga,colonna,rec.anno_rif);	 
						scrivi_cella(riga,colonna,rec.vincolo);	 
						
						scrivi_cella(riga,colonna,rec.descr_sostitui);	 
						scrivi_cella(riga,colonna,rec.descr_modal_forn);
						scrivi_cella(riga,colonna,rec.nome_ente);	 
						scrivi_cella(riga,colonna,rec.nome_tipo_ente);	 
						scrivi_cella(riga,colonna,rec.nome_archivio);	 
						
						scrivi_cella(riga,colonna,rec.descr_fornitore);	 
						scrivi_cella(riga,colonna,rec.sigla_direzione);	 
						scrivi_cella(riga,colonna,rec.sigla_struttura);	 
						scrivi_cella(riga,colonna,rec.descr_stato);	 

				    
			END LOOP;
			 
			CLOSE c_cur;
			client_ole2.DESTROY_ARGLIST(args);
			 
	 		args := client_ole2.CREATE_ARGLIST; 
	 		client_ole2.ADD_ARG(args, 'A:N'); 
			cols := client_ole2.GET_OBJ_PROPERTY(wksheet,'Columns', args);
			client_ole2.set_property (cols,'Autofit',true);
			client_ole2.DESTROY_ARGLIST(args);	
			client_ole2.release_obj(cols);
	
	    tool_env.getvar('TEMP',temp_dir);
	    file_name := 'Output_'||to_char(sysdate,'yyyymmdd.hh24miss')||'.xls';
	 
			args1 := client_ole2.CREATE_ARGLIST;
			client_ole2.ADD_ARG(args1, temp_dir||'\'||file_name);
			client_ole2.INVOKE(wkbook, 'SaveAs', args1);
			client_ole2.set_property (XlApp, 'Visible', TRUE);
			client_ole2.DESTROY_ARGLIST(args1);
			

			
			client_ole2.release_obj(wksheet);
			client_ole2.release_obj(wksheets);
			client_ole2.release_obj(wkbook);
			client_ole2.release_obj(wkbooks);
			client_ole2.RELEASE_OBJ(XlApp);
			

			set_application_property(cursor_style,'NORMAL');
			:elaborazione:='';
			
			synchronize;
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 15 2010
Added on Dec 17 2009
10 comments
2,524 views