Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   query con filtro (https://www.clubdelphi.com/foros/showthread.php?t=881)

vicvil 27-05-2003 23:19:00

query con filtro
 
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 27-05-2003 23: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 00: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 04: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 09: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 19: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 19: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 20: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 20:21:50

En primer lugar, te recomiendo leerte un buen libro de SQL.....

Ahora, podes hacer:

Código:

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 22:40:08

Asunto solucionado :D muchas gracias a todos


La franja horaria es GMT +2. Ahora son las 00:39:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi