Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Problema al consultar con campo calc. como parametro
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Problema al consultar con campo calc. como parametro

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
agustinbus
Excelente usuario


Registrado: Apr 17, 2009
Mensajes: 38

Asunto: Problema al consultar con campo calc. como parametro Responder citando

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:

Clientes:
------------
-Codigo
-Nombre
...

CuentasCorrientes:
----------------------
-CodCliente
-Depositos
-Retiros
-Saldo


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;

QDeudoresSaldo.Value := QDeudoresDepositos.Value - QDeudoresRetiros.Value;



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;

QDeudoresSaldo.Value := QDeudoresDepositos.Value - QDeudoresRetiros.Value;

if QDeudoresSaldo.Value < 0 then
begin
//CODIGO PARA OCULTAR EL REGISTRO
end;


Espero puedan ayudarme con este Grandisimo problema y desde ya muuchas gracias.
Saludos!!!
MensajePublicado:
Mie Oct 12, 2011 8:22 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  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