Buenísima la idea, lo he probado y funciona perfectamente
.... ... ... peeerooooo... ... ... no me sirve
No puedo usar un procedimiento almacenado porque en pantalla el usuario selecciona una serie de opciones de filtro y el select sql se crea dinámicamente
No se me ocurre cómo pasar ese select a un procedimiento, salvo crear el procedure dinámicamente, lanzarlo y borrarlo después. Hacer un "create or alter procedure"... ... ... puede ser
Código Delphi
[-]
procedure TFapuntes.CargarDiario(iParametro: integer);
var
cSql : string;
begin
DMapuntes.QRdiario.Close;
cSql := 'select * from tbapuntes where codigoempresa= :codigoempresa and ejercicio= :ejercicio ';
case iParametro of
0,1,2,3,4: cSql := cSql + ' and codigoestadoapunte=2 '; 5: cSql := cSql + ' and codigoestadoapunte=1 '; end;
case iParametro of
0,2,3: cSql := cSql+' and fechaasiento between :fechadesde and :fechahasta ';
1: cSql := cSql+' and fechacreacion= :fechacreacion and horacreacion>= :horacreacion ';
end;
case iParametro of
4: cSql := cSql + ' and (codigousuariocreacion='+IntToStr(fmain._iCodigoUsuario_)+
' or codigousuariomodificacion='+IntToStr(fmain._iCodigoUsuario_)+')';
end;
cSql := cSql + ' order by codigoempresa, ejercicio, numeroasiento, lineaasiento';
DMapuntes.QRdiario.SelectSQL.Text := cSql;
DMapuntes.QRdiario.Params[0].AsInteger := Fmain._iCodigoEmpresa_;
DMapuntes.QRdiario.Params[1].AsInteger := Fmain._iCodigoEjercicio_;
case iParametro of
0:begin DMapuntes.QRdiario.Params[2].AsDate := edDfecD.Date;
DMapuntes.QRdiario.Params[3].AsDate := edDfecH.Date;
end;
1:begin DMapuntes.QRdiario.Params[2].AsDate := Trunc(fmain._dFechaInicioSesion_);
DMapuntes.QRdiario.Params[3].AsTime := Frac (fmain._dFechaInicioSesion_);
end;
2:begin DMapuntes.QRdiario.Params[2].AsDate := getFechaServidor;
DMapuntes.QRdiario.Params[3].AsDate := getFechaServidor;
end;
3:begin DMapuntes.QRdiario.Params[2].AsDate := fmain._dFechaTrabajo_;
DMapuntes.QRdiario.Params[3].AsDate := fmain._dFechaTrabajo_;
end;
end;
DMapuntes.QRdiario.Open;
grDiario.SetFocus;
end;