Asunto: Problema al consultar con campo calc. como parametro
Buenas gente! como andan? Estoy con un problema que me tiene como loco.
Les explico un poco la estructura de las tablas para q puedan entender en detalle:
En un ADOQuery ejecuto la siguiente consulta para mostrar un listado de Todos los clientes con su saldo, sin mostrar el detalle o sea:
Nombre Dep Ret Saldo
----------------------------------------
AGUSTIN 1000 900 100
JUAN 200 300 -100
NOTA: Dep, Ret y Saldo son campos calculados
El codigo que utilizo es el siguiente
Código:
QOperaciones.Close;
QOperaciones.SQL.Clear;
QOperaciones.SQL.Add('SELECT SUM(Deposito) AS Deposito, SUM(Retiro) AS Retiro FROM CuentasCorrientes WHERE CuentasCorrientes.CodCuenta =' + QuotedStr(IntToStr(QDeudoresCodCuenta.Value)));
QOperaciones.Open;
//LD1.Caption := IntToStr(QDeudas.RecordCount);
QDeudoresDepositos.Value := FPrincipal.QOperaciones.FieldByName('Deposito').AsCurrency;
QDeudoresRetiros.Value := FPrincipal.QOperaciones.FieldByName('Retiro').AsCurrency;
Hasta aqui todo bien. Lo que necesito es mostrar la misma informacion pero SOLO los que tienen saldo POSITIVO (Saldo > 0). El problema es que no puedo usar una consulta WHERE Saldo > 0 ya que Saldo es calculado.
Resolvi el problema utilizando el Evento OnFilterRecord del ADOQuery y aplicando la propiedad filtered a true.
Código:
Accept := QDeudoresSaldo.Value > 0;
PERO!!! es EXTREMADAMENTE lento ya que el filtro se realiza en el cliente y no sobre el servidor.
necesito saber si es posible realizar alguna consulta que pueda hacer esto, o ocultar en el momento de calcular los campos (OnCalcFields) los registros cuyo saldo sea menor a 0.
Algo como:
Código:
QOperaciones.Close;
QOperaciones.SQL.Clear;
QOperaciones.SQL.Add('SELECT SUM(Deposito) AS Deposito, SUM(Retiro) AS Retiro FROM CuentasCorrientes WHERE CuentasCorrientes.CodCuenta =' + QuotedStr(IntToStr(QDeudoresCodCuenta.Value)));
QOperaciones.Open;
//LD1.Caption := IntToStr(QDeudas.RecordCount);
QDeudoresDepositos.Value := FPrincipal.QOperaciones.FieldByName('Deposito').AsCurrency;
QDeudoresRetiros.Value := FPrincipal.QOperaciones.FieldByName('Retiro').AsCurrency;
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A