ciao a tutti,
da Oracle Forms 10g devo creare un foglio Excel con 4 pagine e un grafico a torta che attinge i dati dall'ultimo foglio. Per la creazione del foglio non ho avuto difficoltà. Per il grafico a torta ho usato questo frammento

codice:
... --creo fogli w1, w2, w3
  w1 := OLE2.Invoke_Obj(worksheets, 'Add');
  OLE2.set_property(w1,'Name',NVL(P_NOME_FOGLIO,'Foglio Dati'));

... --foglio dati w4.
--definisco l'intervallo dati per il grafico
	args:=OLE2.create_arglist;
	STR_FORMULA := 'A' || (J-2) || ':D' || J;   --es. A12:D14
	OLE2.add_arg(args, STR_FORMULA);
	rang:=OLE2.get_obj_property(worksheet, 'Range', args);
	OLE2.destroy_arglist(args);
	OLE2.INVOKE(rang,'Select');	

--creo il grafico
	workcharts:=OLE2.GET_OBJ_PROPERTY(workbook,'CHARTS'); 
	WORKCHART := ole2.Invoke_obj(workcharts, 'Add'); 
	OLE2.SET_PROPERTY(WORKCHART,'ChartType','xl3DPieExploded');

	OLE2.SET_PROPERTY(workchart, 'NAME', 'RIPARTIZIONE LAVORI'); 
	OLE2.SET_PROPERTY(workchart, 'ChartTitle', 'RIPARTIZIONE LAVORI'); 

--assegno al grafico l'intervallo di celle selezionato (rang)
	args := OLE2.CREATE_ARGLIST;
	OLE2.ADD_ARG(args, rang);
	OLE2.INVOKE(workchart, 'SetSourceData Source', args); 
	OLE2.DESTROY_ARGLIST(args);

	OLE2.RELEASE_OBJ(RANG);
	OLE2.RELEASE_OBJ(workchart);
	OLE2.RELEASE_OBJ(workcharts);

	OLE2.SET_PROPERTY(workchart, 'HasLegend', 0);
Questo codice crea il grafico, ma ci sono alcuni problemi.
1. Il grafico è corretto, ma è sempre nel formato a barre. Creando un grafico a mano, ho trovato che il tipo corrispondente al grafico a torta è 'xl3DPieExploded'; ma se lo assegno al workchart, il risultato è sempre un grafico a barre (istogramma)

2. L'ordine dei fogli è inverso rispetto a quello desiderato (grafico, w4, w3, w2, w1). Il grafico viene creato in un foglio a parte. E' possibile forzare l'ordine dei fogli con queste istruzioni
codice:
--creo un foglio in posizione 1
	args := OLE2.CREATE_ARGLIST; 
	OLE2.ADD_ARG( args, 1 ); 
	worksheet := OLE2.GET_OBJ_PROPERTY( worksheets, 'Item', args);
	OLE2.DESTROY_ARGLIST( args);
              OLE2.set_property(w1,'Name',NVL(P_NOME_FOGLIO,'Foglio Dati'));
in questo modo, l'ordine dei fogli è corretto, ma il grafico mi appare all'inizio del file, ed è vuoto.
Ci sto sbattendo la testa da una settimana. Qualcuno ha qualche suggerimento per come risolvere questi problemi? grazie