Como estan? el tema es el siguiente:
trabajo con Delphi 7 - Mysql 5.0 mediane Zeos - Campos Calculados
debo exportar a Excel el detalle del libro iva Ventas, la Exportacion la Hago de la siguiente manera :
Código Delphi
[-]
procedure Tflibrosiva.btnexportarventasClick(Sender: TObject);
var excel,libro:variant; sino:string;
x,y:integer;
fila:integer;
saldo:currency;
fecha1,fecha2:string;
begin Excel := CreateOleObject('Excel.Application');
Excel.WorkBooks.add;
Excel.visible:=True;
Libro := Excel.WorkBooks[1].WorkSheets['Hoja1'];
excel.range['a1:g1'].Merge;
excel.range['a1']:=' IVA VENTAS del período '+ inttostr(calventas.Month)+'/'+inttostr(calventas.Year) +' al '+ datetostr(date)+' a hs. '+ timetostr(time);
Excel.Range['A1'].Font.Name := 'Verdana';
Excel.Range['A1'].Font.FontStyle := 'Bold';
excel.range['a1'].font.Color := clgreen;
Excel.Range['a3:m3'].Font.Name := 'Verdana';
Excel.Range['a3:m3'].Font.FontStyle := 'Bold';
excel.range['a3:m3'].font.Color := clgreen;
excel.Range['A3','m3'].Value:=VarArrayOf(['Fecha','Tipo', 'Número','Razón Social','CUIT', 'Imp. Neto Grab.', '% IVA','Imp. IVA Fact.', 'Imp. Resp.No Insc.', 'Concep. No Grab.','Exentas','Pagos a Cta', 'Total Facturado']);
fila:=4;
qventas.First;
while qventas.eof=false do
begin excel.Range['A'+inttostr(fila+3),'m'+inttostr(fila+3)].Value:=VarArrayOf([qventas.FieldByName('fecha').value,qventas.FieldByName('tipolibroiva').value, qventas.FieldByName('Numero').value, qventas.FieldByName('apynombre').value,qventas.FieldByName('CUIT').value, qventas.FieldByName('Calc_netograbado').value,qventas.FieldByName('pocimpuesto').value,qventas.Field ByName('calc_ivafact').value, qventas.FieldByName('noinscripto').value, qventas.FieldByName('ConcepNoGrab').value,qventas.FieldByName('exenta').value, qventas.FieldByName('pagoacuenta').value, qventas.FieldByName('calc_total').value ]);
fila:=fila+1;
qventas.Next;
end;
qventas.EnableControls;
excel.Range['a3'].Select;
excel.Selection.AutoFilter;
excel.range['a:z'].Columns.AutoFit;
el error lo tengo en los valores que asume la variable
fila, los cuales son absurdos ya que toma primero un valor de 256 todas las veces que se ejecuta dentro del while aunque a veces toma un numero 32 mil y algo, al query lo tengo asociado a dbgrid de los componentes suipack
y en el evento de qventas oncalcfields que es un query de zeos :
Código Delphi
[-]
procedure Tflibrosiva.qventasCalcFields(DataSet: TDataSet);
var cadena:string;
begin cadena:=StringOfChar('0', 4-Length(qventas.fieldbyname('puntoventa').asstring))+qventas.fieldbyname('puntoventa').asstring;
cadena:=cadena +'-'+ stringofchar('0',8-Length(qventas.fieldbyname('NumComprobante').asstring))+qventas.fieldbyname('NumComprobante').asstri ng;
qventas.FieldByName('noinscripto').value:=0;
qventas.FieldByName('numero').value:=cadena;
if (qventas.Fieldbyname('idcomprobante').value=9) or (qventas.FieldByName('idcomprobante').value=11) then begin qventas.FieldByName('calc_netograbado').Value:= qventas.fieldbyname('trenglon').Value*-1;
qventas.FieldByName('calc_ivafact').Value:=qventas.fieldbyname('trengloiva').Value*-1;
qventas.FieldByName('calc_total').value:= (qventas.fieldbyname('trenglon').Value*-1)+(qventas.fieldbyname('trengloiva').Value*-1);
end else begin qventas.FieldByName('calc_netograbado').Value:= qventas.fieldbyname('trenglon').Value;
qventas.FieldByName('calc_ivafact').Value:=qventas.fieldbyname('trengloiva').Value;
qventas.FieldByName('calc_total').value:= (qventas.fieldbyname('trenglon').Value)+(qventas.fieldbyname('trengloiva').Value);
end;
end;
yo culpo a los campos calculados puede que no sea ahi el problema pero delphi se comporta de una manera extraña, ya rebice varias veces el codigo y no encuentro ningun error.
alguna idea?
gracias de Antemano.