PDA

Ver la Versión Completa : query con filtro


vicvil
28-05-2003, 00:19:00
Tengo un query con un con un evento OnFilterRecord y estoy haciendo una búsqueda sobre ese query con una función Locate, el problema está en que cada vez que hago la busqueda se ejecuta el OnFilterRecord, ¿como hago para que ello no ocurra?

__cadetill
28-05-2003, 00:42:19
Hola vicvil

Si miramos el codigo del Locate, se ve que lo primero que hace es un First y luego va haciendo Next hasta encontrar el registro de seado (o no). Por lo que al hacer este tipo de busqueda secuencial, no hay manera de evitar que salte el evento (almenos que yo conozca)

No te serviria utilizar la clausula where de la query? Es una idea como alternativa al Filtro

vicvil
28-05-2003, 01:26:15
El problema es el siguiente, tengo una form donde estoy mandando a imprimir una consulta y otra form con el preview de esta. Ahora al momento de mandar a imprimir estoy creando y abriendo un query con los saldos mensuales y otro con los clientes. El primero contiene los saldos y los codigos de los clientes y el segundo el codigo del cliente y el ejecutivo de contacto. Con esto realizo el preview del reporte.
Si hago el where para el query de clientes con el codigo de los saldos, es decir algo como:
clientes where codigo = cod
clientes.parambyname(cod) := saldos.fieldByName(codigo)

al momento de imprimir me manda los datos de los clientes en blanco.
Como no me resultó así intenté poner un locate dentro del beforeprint de un qrsubdetail, pero comienza a repetir los clientes hasta que encuentra el siguiente y vuelve a repetir hasta que encuentra al siguiente y asi sucesivamente, por lo que al final me quedan un monton de clientes repetidos.
Luego puse un filterrecord para el query clientes con el fin de obtener solo aquellos con el ejecutivo deseado y es ahi donde cada vez que hago el locate se va dar vueltas al filter.
Espero me entiendan...

jachguate
28-05-2003, 05:31:30
Lo que pude entender es que queres hacer un informe de saldos por cliente, para cada ejecutivo, o algo asi....

Si es así, podes hacer un query que traiga toda la información, no??? y luego a nivel del reporte, agrupar por el ejecutivo.

Creo que es mucho mas óptimo...

Hasta luego.

;)

__cadetill
28-05-2003, 10:47:12
Lo que te comenta jachguate es lo que yo te iva a proponer. Utiliza las Querys esas para mostrar los datos por pantalla y, al momento de imprimir (impresora), lanza otra Query para el listado que contenga SOLO la información que deseas.

Espero te sirva

vicvil
28-05-2003, 20:05:18
Pero como genero un query con los resultados de los otros dos y como lo utilizo para imprimir???
Perdonen mi ignorancia pero estoy hace poco empezando con esto...

__cadetill
28-05-2003, 20:20:44
Pon la estructura de las tablas y la relacion que hay entre ellas y miramos de ayudarte en el SQL ;)

vicvil
28-05-2003, 21:03:21
La tabla Cliente tiene:
codigo
nombre
telefono
ejecutivo

La tabla Saldos tiene:
codigo
saldo

necesito imprimir el codigo, nombre, telefono y saldo de clientes por ejecutivo.

jachguate
28-05-2003, 21:21:50
En primer lugar, te recomiendo leerte un buen libro de SQL.....

Ahora, podes hacer:

Select c.Ejecutivo, e.Nombre nEjecutivo,
c.Codigo, c.Nombre, c.Telefono, s.Saldo
from Cliente c, Ejecutivo e, Saldos s
where c.codigo = s.Codigo
and e.Ejecutivo = c.Ejecutivo
order by c.Ejecutivo



Luego agrupas por ejecutivo a nivel del reporte.

Hasta luego.

;)

vicvil
28-05-2003, 23:40:08
Asunto solucionado :D muchas gracias a todos