Ver Mensaje Individual
  #1  
Antiguo 21-11-2008
dinover7 dinover7 is offline
Registrado
 
Registrado: may 2007
Posts: 4
Reputación: 0
dinover7 Va por buen camino
Subconsulta dentro de un QuickReport.. Utilizo tablas Paradox..Ayudaaaa Please...

Tengo un problemon...

tengo 2 tablas paradox.. Empleados y Inasistencias...


cuando tiro un reporte quickreport.. muestro los datos de los empleados, y tengo que revisar en la base de datos de inasistencias, cuantas veces falto esee empleado , en un periodo de tiempo entre 2 fechas...

esa subconsulta.. la hago en el evento.. OnStartPage, del quick report.. aveces funciona bien..otras veces.. se tilda.. se me cierra la aplicacion porque dice que tengo demasiadas tablas abiertas...

CUAL ES LA FORMA CORRECTA DE HACERLO...

PEGO EL CODIGO:


este es el codigo de cuando se carga el quickreport:


DBSearch.DatabaseName := 'dbs\';
DBSearch.SQL.Clear;
DBSearch.SQL.Add('SELECT * FROM EMPLEADO.DB WHERE COOPERATIVA LIKE '+quotedstr('%'+wndmain.cbCooperativa.text+'%')+ ' AND TRABAJO_ASIGNADO LIKE '+quotedstr('%'+wndmain.cbPuestoTrabajo.Text+'%')+ ' AND HABILITADO LIKE '+quotedstr('%SI%'));
DBSearch.SQL.Add(' ORDER BY APELLIDO') ;
DBSearch.ExecSQL ;

quickrep1.DataSet := dbSearch;

dbsearch.Active := true;



Este es el codigo que tengo en el evento OnStarPage: del quickrepott:



Monto_Inasistencia := 0;

dbInasistencias.DatabaseName := 'dbs\';
dbinasistencias.Active:=false;
dbInasistencias.SQL.Clear;
dbInasistencias.SQL.Add('SELECT * FROM '+ 'INA2008.db' + ' WHERE DNI= NI AND FECHA >= :fecha1 AND FECHA<= :fecha2' );


dbInasistencias.Params.ParamByName('DNI').AsInteger := dbsearch.FieldValues['DNI'];
dbInasistencias.Params.ParamByName('fecha1').AsDate:= wndmain.pImpresionFrom;
dbInasistencias.Params.ParamByName('fecha2').AsDate:= wndmain.pImpresionTo;

dbInasistencias.ExecSQL;
dbInasistencias.Open;


while not dbInasistencias.Eof do
begin

// repita y almacena el monto de descuento
monto_Inasistencia := monto_Inasistencia + dbInasistencias.FieldValues ['MONTO'];


dbInasistencias.Next;

end;


dbInasistencias.Active:=true;



BUENO, AGRADECERE MUCHISIMO SI ALGUIEN ME DA UNA MANO...


ya no se que tocar...

gracias.

si alguno tiene un email para el msn, mejor.. mil gracias !!!
leandro
Responder Con Cita