Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-06-2005
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Un problema con COLNITIALIZE

Tengo un problema que no sé como resolverlo.....bueno mas bien es un error que no sé como corregirlo, espero que alguno de uds., que tiene mas experiencia en la programación con delphi, y particularmente en el uso de codigo para exportar información de Interbase a Excel, me pueda ayudar a corregirlo, ya que anteriormente funcionaba pero le agrege un componente y eso hizo que restructura el código un poco, no hubo grandes cambios.

Bueno el error es este.....cuando corro la aplicación (mis sistema), y selecciono del menu principal el proceso para exportar, se detiene en la linea :

Excel:=CreateOleObject('Excel.Application');

Y marca el siguiente error: raised exception class EOleSysError with message 'No se ha llamado a Colnitialize'. De que esta hablando?....le mando el código completo para un mayor analisis.
unit Exportar;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IBExtract, Buttons, ToolWin, ComCtrls, ExtCtrls, StdCtrls,
DB, IBCustomDataSet, kds2dbf, OleServer, Excel2000, ComObj, IBQuery,
DataExport, DataToDbf, Mask, DataToXLS;

type
TfrmExportar = class(TForm)
pnlEncabezado: TPanel;
ToolBar1: TToolBar;
sBtnExit: TSpeedButton;
pnlDatos: TPanel;
pnlBotones: TPanel;
SpeedButton1: TSpeedButton;
sBtnExportar: TBitBtn;
pnlPeriodo: TPanel;
Label1: TLabel;
Label2: TLabel;
mskMes: TMaskEdit;
mskAnio: TMaskEdit;
pnlTabla: TPanel;
cbxTablas: TComboBox;
Label3: TLabel;
Label4: TLabel;
qryExportarExcel: TIBQuery;
dXls: TDataToXLS;
procedure sBtnExportarClick(Sender: TObject);
procedure sBtnExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure pnlPeriodoExit(Sender: TObject);
procedure pnlTablaEnter(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmExportar: TfrmExportar;

implementation
uses Modulo;
{$R *.dfm}

procedure TfrmExportar.sBtnExportarClick(Sender: TObject);
Var
Excel, Libro: Variant;
i,nRuta,nRuta2,nHoja,nMes,nAnio,nCveLec, nFrec :Integer;
nTotFrec, nTotKmsVis, nTotKmsMes,nTotImp,nKmsVis, nKmsMes, nImp : Double;
nDesc, nTotPagar : Double;
Nombre, cRuta, cDescrip, cDias,cFichero, cSuma, cMarcaVehiculo,cModelo : String;
cPlacas, cAseguradora, cPoliza, cSede : String;
cLun1,cLun2,cLun3,cLun4,cLun5,cMar1,cMar2,cMar3,cMar4,cMar5 : TMemo;
cMie1,cMie2,cMie3,cMie4,cMie5,cJue1,cJue2,cJue3,cJue4,cJue5 : TMemo;
cVie1,cVie2,cVie3,cVie4,cVie5 : TMemo;

begin
case cbxTablas.ItemIndex of
0: Begin
qryExportarExcel.Close;
qryExportarExcel.SQL.Clear;
qryExportarExcel.SQL.Add('Select a.mes_periodo,a.anio_periodo,a.clave_ruta,a.lun1,a.lun2,a.lun3,');
qryExportarExcel.SQL.Add('a.lun4,a.lun5,a.mar1,a.mar2,a.mar3,a.mar4,a.mar5,a.mie1,a.mie2,');
qryExportarExcel.SQL.Add('a.mie3,a.mie4,a.mie5,a.jue1,a.jue2,a.jue3,a.jue4,a.jue5,a.vie1,a.vie2,');
qryExportarExcel.SQL.Add('a.vie3,a.vie4,a.vie5,a.sede,a.lecherias,a.lecherias2,a.lecherias3,');
qryExportarExcel.SQL.Add('a.lecherias4,a.comentarios,c.nombre');
qryExportarExcel.SQL.Add('from CALENDARIO a, RUTA b, PROMOTOR c');
qryExportarExcel.SQL.Add('where MES_PERIODO=:MES');
qryExportarExcel.SQL.Add(' and ANIO_PERIODO=:ANIO');
qryExportarExcel.SQL.Add(' and a.clave_ruta=b.clave_ruta');
qryExportarExcel.SQL.Add(' and b.clave_promotor=c.clave_promotor');
qryExportarExcel.SQL.Add('order by a.CLAVE_RUTA');
qryExportarExcel.ParamByName('MES').AsInteger:=StrToInt(mskMes.Text);
qryExportarExcel.ParamByName('ANIO').AsInteger:=StrToInt(mskAnio.Text);
qryExportarExcel.Open;

Excel:=CreateOleObject('Excel.Application');
Excel.Visible:=False;
Excel.DisplayAlerts:=False;
Excel.WorkBooks.Add('c:\Atencion\Plantillas\Calendario.xlt');
qryExportarExcel.First;
nHoja:=1;
// nTotPagar:=0;
While not (qryExportarExcel.Eof) do
begin
i:=10;
nRuta:=qryExportarExcel.FieldValues['CLAVE_RUTA'];
nRuta2:=qryExportarExcel.FieldValues['CLAVE_RUTA'];
cRuta:='Ruta '+IntToStr(nRuta);
Nombre:=qryExportarExcel.FieldValues['NOMBRE'];
nMes:=qryExportarExcel.FieldValues['MES_PERIODO'];
nAnio:=qryExportarExcel.FieldValues['ANIO_PERIODO'];
cSede:=qryExportarExcel.FieldValues['SEDE'];
Excel.WorkBooks[1].WorkSheets[nHoja].Name:=cRuta;
Libro:=Excel.WorkBooks[1].WorkSheets[cRuta];
Libro.Cells[6,1]:='Ruta:'+IntToStr(nRuta)+' '+Nombre;
Libro.Cells[6,3]:='SEDE:'+cSede;
Libro.Cells[6,5]:='Periodo:'+IntToStr(nMes)+' '+IntToStr(nAnio);
While (nRuta=nRuta2) and not (qryExportarExcel.Eof) do
begin
cLun1.Text:=qryExportarExcel.FieldValues['LUN1'];
Libro.Cells[i,1]:=cLun1.Text;
qryExportarExcel.Next;
inc(i);
end;
inc(nHoja);
end;
cFichero:='c:\Atencion\XLS\Calendario_'+mskMes.Text+mskAnio.Text+'.xls';
Libro.SaveAs(cFichero);
ShowMessage('El Archivo '+cFichero+' ha sido creado');
Excel.quit;
cbxTablas.SetFocus;
end;
1: Begin
qryExportarExcel.Close;
qryExportarExcel.SQL.Clear;
qryExportarExcel.SQL.Add('SELECT a.clave_ruta,a.mes_periodo, a.anio_periodo, a.clave_lec,');
qryExportarExcel.SQL.Add('a.lec_descripcion, a.frecuencia, a.kms_visitas, a.kms_mensual,a.importe, c.nombre,');
qryExportarExcel.SQL.Add('d.descripcion, c.placas,c.modelo,c.aseguradora,c.poliza,');
qryExportarExcel.SQL.Add('a.dias_visita, c.clave_promotor, a.descuento,a.COMENTARIO');
qryExportarExcel.SQL.Add('FROM costo_ruta a, ruta b, promotor c, vehiculo d');
qryExportarExcel.SQL.Add('WHERE a.mes_periodo=:MES');
qryExportarExcel.SQL.Add('AND a.anio_periodo=:ANIO');
qryExportarExcel.SQL.Add('AND a.clave_ruta=b.clave_ruta');
qryExportarExcel.SQL.Add('AND b.clave_promotor=c.clave_promotor');
qryExportarExcel.SQL.Add('AND c.clave_coche=d.clave_coche');
qryExportarExcel.SQL.Add('ORDER BY a.clave_ruta, a.clave_lec');
qryExportarExcel.ParamByName('MES').AsInteger:=StrToInt(mskMes.Text);
qryExportarExcel.ParamByName('ANIO').AsInteger:=StrToInt(mskAnio.Text);
qryExportarExcel.Open;
Excel:=CreateOleObject('Excel.Application');
Excel.Visible:=False;
Excel.DisplayAlerts:=False;
Excel.WorkBooks.Add('c:\Atencion\Plantillas\costos.xlt');
qryExportarExcel.First;
nHoja:=1;
nTotPagar:=0;
While not (qryExportarExcel.Eof) do
begin
i:=12;
nRuta:=qryExportarExcel.FieldValues['CLAVE_RUTA'];
nRuta2:=qryExportarExcel.FieldValues['CLAVE_RUTA'];
cRuta:='Ruta '+IntToStr(nRuta);
Nombre:=qryExportarExcel.FieldValues['NOMBRE'];
nMes:=qryExportarExcel.FieldValues['MES_PERIODO'];
nAnio:=qryExportarExcel.FieldValues['ANIO_PERIODO'];
Excel.WorkBooks[1].WorkSheets[nHoja].Name:=cRuta;
Libro:=Excel.WorkBooks[1].WorkSheets[cRuta];
Libro.Cells[7,3]:=Nombre;
Libro.Cells[7,13]:=nMes;
Libro.Cells[8,3]:=nRuta;
Libro.Cells[8,13]:=nAnio;
nTotImp:=0;
nTotFrec:=0;
nTotKmsVis:=0;
nTotKmsMes:=0;
nDesc:=0;
While (nRuta=nRuta2) and not (qryExportarExcel.Eof) do
begin
nCveLec :=qryExportarExcel.FieldValues['CLAVE_LEC'];
cDescrip:=qryExportarExcel.FieldValues['LEC_DESCRIPCION'];
nFrec :=qryExportarExcel.FieldValues['FRECUENCIA'];
nKmsVis :=qryExportarExcel.FieldValues['KMS_VISITAS'];
nKmsMes :=qryExportarExcel.FieldValues['KMS_MENSUAL'];
nImp :=qryExportarExcel.FieldValues['IMPORTE'];
cDias :=qryExportarExcel.FieldValues['DIAS_VISITA'];
cMarcaVehiculo:=qryExportarExcel.FieldValues['DESCRIPCION'];
if qryExportarExcel.FieldByName('DESCUENTO').IsNull then begin
nDesc:=0;
end Else Begin
nDesc:=qryExportarExcel.FieldValues['DESCUENTO'];
end;
if cMarcaVehiculo='NINGUNO' then begin
cMarcaVehiculo:='';
cModelo:='';
cPlacas:='';
cAseguradora:='';
cPoliza:='';
end Else Begin
cMarcaVehiculo:=qryExportarExcel.FieldValues['DESCRIPCION'];
cModelo :=qryExportarExcel.FieldValues['MODELO'];
cPlacas :=qryExportarExcel.FieldValues['PLACAS'];
cAseguradora :=qryExportarExcel.FieldValues['ASEGURADORA'];
cPoliza :=qryExportarExcel.FieldValues['POLIZA'];
end;
Libro.Cells[i,1] :=nCveLec;
Libro.Cells[i,3] :=cDescrip;
Libro.Cells[i,5] :=cDias;
Libro.Cells[i,7] :=nFrec;
Libro.Cells[i,9] :=nKmsVis;
Libro.Cells[i,11]:=nKmsMes;
Libro.Cells[i,13]:=nImp;
inc(i);
nTotFrec:=nTotFrec+nFrec;
nTotKmsVis:=nTotKmsVis+nKmsVis;
nTotKmsMes:=nTotKmsMes+nKmsMes;
nTotImp :=nTotImp+nImp;
qryExportarExcel.Next;
nRuta:=qryExportarExcel.FieldValues['CLAVE_RUTA'];
end;
inc(i);
Libro.Cells[i,5]:='SubTotal';
Libro.Cells[i,7]:=nTotFrec;
Libro.Cells[i,9]:=nTotKmsVis;
Libro.Cells[i,11]:=nTotKmsMes;
Libro.Cells[i,13]:=nTotImp;
Libro.Cells[i+1,11]:='*Descuento';
Libro.Cells[i+1,13]:=nDesc;
Libro.Cells[i+2,11]:='TOTAL A PAGAR';
nTotPagar:=nTotImp-nDesc;
Libro.Cells[i+2,13]:=nTotPagar;
Libro.Cells[i+4,1]:='CARACTERISCTAS DEL VEHICULO';
Libro.Cells[i+5,1]:='Marca Vehiculo:';
Libro.Cells[i+5,2]:=cMarcaVehiculo;
Libro.Cells[i+6,1]:='Modelo:';
Libro.Cells[i+6,2]:=cModelo;
Libro.Cells[i+7,1]:='Placas:';
Libro.Cells[i+7,2]:=cPlacas;
Libro.Cells[i+5,5]:='Aseguradora:';
Libro.Cells[i+5,7]:=cAseguradora;
Libro.Cells[i+6,5]:='Numero Poliza:';
Libro.Cells[i+6,7]:=cPoliza;
Libro.Cells[i+20,1]:=Nombre;
Libro.Cells[i+21,1]:='PROMOTOR SOCIAL';
Libro.Cells[i+22,1]:='(FIRMA)';
Libro.Cells[i+20,8]:='ING. VICTOR MARIO FLORES RUBIO';
Libro.Cells[i+21,8]:='SUBGERENTE DE PADRON DE BENEFICIARIOS';
Libro.Cells[i+22,8]:='(FIRMA)';
inc(nHoja);
end;
cFichero:='c:\Atencion\XLS\costo_'+mskMes.Text+mskAnio.Text+'.xls';
Libro.SaveAs(cFichero);
ShowMessage('El Archivo '+cFichero+' ha sido creado');
Excel.quit;
cbxTablas.SetFocus;
// ShowMessage('En proceso');
end;
end; //Fin del CASE
end;

procedure TfrmExportar.sBtnExitClick(Sender: TObject);
begin
Close;
end;

procedure TfrmExportar.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;

procedure TfrmExportar.pnlPeriodoExit(Sender: TObject);
begin
if (mskMes.Text='') or (mskAnio.Text='') then begin
Application.MessageBox('Digita un periodo valido','Error',mb_ok+mb_IconError);
cbxTablas.SetFocus;
end Else Begin
if cbxTablas.ItemIndex = 0 then begin
qryExportarExcel.Close;
qryExportarExcel.SQL.Clear;
qryExportarExcel.SQL.Add('SELECT * FROM CALENDARIO');
qryExportarExcel.SQL.Add('WHERE MES_PERIODO=:MES AND ANIO_PERIODO=:ANIO');
qryExportarExcel.ParamByName('MES').AsInteger:=StrToInt(mskMes.Text);
qryExportarExcel.ParamByName('ANIO').AsInteger:=StrToInt(mskAnio.Text);
qryExportarExcel.Open;
end Else Begin
qryExportarExcel.Close;
qryExportarExcel.SQL.Clear;
qryExportarExcel.SQL.Add('SELECT * FROM costo_ruta');
qryExportarExcel.SQL.Add('WHERE MES_PERIODO=:MES AND ANIO_PERIODO=:ANIO');
qryExportarExcel.ParamByName('MES').AsInteger:=StrToInt(mskMes.Text);
qryExportarExcel.ParamByName('ANIO').AsInteger:=StrToInt(mskAnio.Text);
qryExportarExcel.Open;
end;
if qryExportarExcel.IsEmpty then begin
Application.MessageBox('No existen movimientos para este periodo','Error',mb_ok+mb_IconError);
cbxTablas.SetFocus;
end;
qryExportarExcel.Active:=true;
end;// Fin del IF
end;

procedure TfrmExportar.pnlTablaEnter(Sender: TObject);
begin
qryExportarExcel.Active:=False;
qryExportarExcel.Close;
mskMes.Text:='';
mskAnio.Text:='';
cbxTablas.Text:='';
end;

end.

DE ANTEMANO GRACIAS POR SUS COMENTARIOS AL RESPECTO, y ojala y me puedan ayudar.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:06:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi