PDA

Ver la Versión Completa : Tabla Dinamica a Excel con Delphi


jofebas
28-09-2011, 23:26:40
Buenas tardes.
Estoy trabajando con reportes en Excel y todo bien pero ahora me encontré con la necesidad de hacer un atabla dinámica desde Delphi, encontré un programita que realiza esa función, también en Delphi, pero lo hace con valores fijos.
Yo lo quiero hacer con variables de consultas en bases de datos de MySql
El problema que tengo que al mandar crear la tabla dinámica me manda un error que por lo que investigue tiene que ver con funciones de office ya busque por muchos lados y no puedo, he modificado mi código de muchas formas pero tampoco, así e ahora pido de favor me ayuden si alguien sabe cómo.
Gracias

este es parte del codigo por que es muy grande y no cabe.

es con el TExcelApplication

jofebas
28-09-2011, 23:28:38
//tabla
Hoja.Range['A' + inttostr(i+5),'A' + inttostr(i+5)].Activate;
Hoja.PivotTableWizard(xlDatabase, 'A5:AL' + inttostr(i-4),'REPORTE',
'TablaDin', EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, lcid);
GD := Whoja.PivotTables('TablaDin', lcid) as PivotTable;
GD.AddFields('A','C','AL', EmptyParam);
(GD.PivotFields('AVERAGE(AL)') as PivotField).Orientation := xlDatafield;
end;
RenombrarArchivo();
if not DirectoryExists('C:\Reportes\') then CreateDir('C:\Reportes\');
if not DirectoryExists('C:\Reportes\Inyeccion\') then CreateDir('C:\Reportes\Inyeccion\');
Excel.ActiveWorkbook.SaveAs( ExtractFilePath( 'C:\Reportes\Inyeccion\' ) + 'ReporteOEE-Inyec.xlsx',EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, xlNoChange, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0);
ShowMessage('Reporte Guardado en C:\Reportes\Inyeccion\');
Excel.Visible[1]:=true;
Excel.Quit;
end;

Chris
28-09-2011, 23:40:20
Primero, reduce el ancho de ese código que es un poco incomodo.

Por otro lado, te falta mencionar cuál es el error que se te está presentando.

Saludos,
Chris

jofebas
28-09-2011, 23:57:36
este es el codigo de la tabla.

el error me dice lo siguiente
EOleException whith message 'OLE error 800A03EC'.


//tabla
Hoja.Range['A' + inttostr(i+5),'A' + inttostr(i+5)].Activate;
Hoja.PivotTableWizard(EmptyParam, 'A5:AL' + inttostr(i-4),'REPORTE',
'Tabla1', EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, 0);
GD := Hoja.PivotTables('TablaDin', 0) as PivotTable;
GD.AddFields('A','C','AL', EmptyParam);
(GD.PivotFields('AVERAGE(AL)') as PivotField).Orientation := xlDatafield;

Chris
28-09-2011, 23:59:33
este es el codigo de la tabla.

el error me dice lo siguiente
EOleException whith message 'OLE error 800A03EC'.


Ese error ni la computadora lo entiende :p

Dinos, que has investigado y sabes sobre el criptico error.

Saludos!

jofebas
29-09-2011, 00:15:51
solo se que un error de formulas en excel, o error de conexion a excel

este es el codigo de la otra aplicacion que baje y funciona pero el tiene datos fijos.

y en el segundo parametro no entiendo la relacion es nombre de la hoja 'Data'
pero R2C1:R10C5 ni idea.


WS.PivotTableWizard(xlDatabase, 'Data!R2C1:R10C5', EmptyParam,
'PivotTable1', EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, lcid);

Chris
29-09-2011, 00:18:48
Una de las cosas que veo, es que en tu primer código, para EmptyParam como el primer parámetro de la función PivotTableWizard. No así en el último código que acabas de postear, dónde pasa la referencia a una ¿variable? xlDatabase. Explicame eso un poco por favor.

Saludos!

jofebas
29-09-2011, 00:59:25
es porque el primer codigoes que modifique el segundo es el que me pasaron, el problema esta en el segundo parametro, donde obtengo el rango de datos hice pruebas con el codigo que funciona moviendo ese parametro y me dio el mismo error lo acomode y funciono con los otros parametros no paso nada tod funcionava igual.