FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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 !! |
#2
|
||||
|
||||
Hola,
RAP de la etiqueta DELPHI (léase el texto en tono cántico-festivo-rapero) La etiqueta DELPHi está aquí, y te ayuda a ti y a mí, con ella podrás el código mostrar, para que de mejor forma te pueda ayudar, RAP, RAP, RAP, la etiqueta DELPHI está aquí. Si la etiqueta DELPHi no quieres usar, yo no pienso molestarme en contestar, porque no se puede el código leer, porque cuesta mucho más de comprender, RAP, RAP, RAP, usa la etiqueta DELPHI YA. El RAP no da para mucho más: hay que repetir los dos párrafos y ya está... por cierto, echa un vistazo a la guía de estilo del Foro que habla sobre la nunca como se debe alabada etiqueta DELPHI y otros interesantes temas. |
#3
|
||||
|
||||
Hola mRoman. Te recomiendo aprender a usar la etiqueta [ code ], [ delphi ], etc. para publicar trozos de código, ya que sin ellas es muy dificil de leer dado que pierde la indentación.
Cita:
Para mas información consultá el Win32 Developer's reference del SDK de windows (instalado en le menú Help de tu instalación de delphi). Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#4
|
||||
|
||||
Se ejecuta la línea Application.Initialize en el DPR de tu proyecto?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
||||
|
||||
Cita:
// Saludos |
#6
|
||||
|
||||
Para Delphi.com.ar
No, en el dpr no se ejecuta ese linea (Application.initialize), que tengo que hacer...?, donde hay que agregar esa linea?....
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#7
|
||||
|
||||
Agregala antes de que se creen tus forms y antes del Application.Run...
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#8
|
||||
|
||||
Intialize
Ok Delphi !....ya funciono GRACIAS.....ya aprendi algo mas !!. Aprovechando la oportunidad, no sé si me puedas auxiliar en esta otra cosa, tengo una tabla con varios campos memos y la quiero exportar a Excel, ¿Se puede exportar los campos memos a una hoja de excel?, ahora el contenido de los memos se puede almacenar en una celda o combinación de estas?.
Gracias nuevamente por tu ayuda. Que este bien.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#9
|
||||
|
||||
Cita:
// Saludos |
|
|
|