Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   TQUERY a partir de TTABLE (https://www.clubdelphi.com/foros/showthread.php?t=34574)

rretamar 14-08-2006 20:15:19

TQUERY a partir de TTABLE
 
Hola gente.
Posteo esta consulta por si a alguien se le presentó esta inquietud alguna vez. Estoy escribiendo una pequeña aplicación que usa en forma local una tabla en formato Paradox.

Tengo una tabla asociada a un objeto TTABLE a la cual le aplico diferentes criterios de filtrado (propiedad FILTER) y a través de un índice limito los registros que se hacen visibles a través de SETRANGE.

La pregunta es: hay alguna forma de usar un componente TQUERY que ejecute una instrucción SQL (de agrupamiento y conteo, en este caso) únicamente en los registros que aparecen visibles en el componente TTABLE ?.

La idea es filtrar la tabla (TTABLE) según un criterio especificado por el usuario, y sobre esa tabla cfiltrada realizar un cálculo de totales (a través de una sentencia SQL).

Saludos desde Argentina

ContraVeneno 15-08-2006 16:24:41

No tengo una respuesta específica para tu pregunta...

Pero, ¿cuál es el problema de hacer el query directo en la base de datos? es decir, ¿por qué tiene que ser sobre el TTable?

rretamar 23-08-2006 14:49:55

Hola.
La idea es que la sentencia SQL se ejecute sobre un subconjunto de registros (los filtrados por TTtable a través de Setrange y Filter), lo que me permitiría realizar estadísticas rápidamente (usando Count, Average y otras funciones).

El software es un registro de números telefónicos. Un módulo se encarga de registrar los números en una tabla Paradox (está funcionando las 24 horas). O sea, por cada llamada telefonica agrega un registro a la tabla. Cada registro confiene datos como el numero telefonico marcado, lafecha, la hora, y otros datos relacionados con la linea.

El otro módulo es arrancado por el usuario, y permite ver el listado de las llamadas, agregar comentarios, borrar registros, entre otras operaciones. Esto lo hago a través de un componente TTable, un DBNavigator y asocio todo eso a una grilla, para permitir la visualización y edición de la tabla.
Esta tabla puede ser filtrada entre dos fechas (por el indice, usando SetRange) y por otros criterios (a través de Filter).

La idea es ejecutar una sentencia SQL (a través de un componente TQuery) sobre los registros de esa tabla (Ttable), pero no sobre todos, sino sobre los que están visibles en ese momento (o sea los filtrados). Eso me permitiría realizar varias estadísticas sobre ese listado, gracias a la potencia del lenguaje sql.

En definitiva, usar un TQuery enlazado al TTtable.

Espero haberme explicado mejor, y pido disculpas si en el primer post no fui lo suficientemente claro.

Saludos cordiales desde Argentina, y espero seguir participando en el foro.

Ramón

Lepe 23-08-2006 17:49:58

Puedes intentarlo, no he usado setrange jamás, así que no sé como funcionan.

En principio,
- añadiría el TQuery de la paleta bde
- configurar su propiedad DatabaseName al alias que uses (si usas alguno)
- configurar su propiedad Database (si usas un objeto TDatabase).
- (se supone que en la propiedad SessionName tienes que especificar la misma que usas en el TTable, que por defecto será "Default")
- escribes la sentencia en su propiedad SQL.
-En su propiedad Datasource, elige el Datasource que tienes ligado al TTable filtrado. Con esto debería operar sobre el conjunto ya filtrado.

Si el último paso no te funciona, tendrás que borrar esa propiedad (dejarla en blanco) y añadir las restricciones a la propia cadena de SQL.

Saludos

ContraVeneno 23-08-2006 18:11:48

Cita:

Empezado por Lepe
... y añadir las restricciones a la propia cadena de SQL....

esto era lo que tenía en mente. Hacer la consulta directo con el query utilizando los mismo filtros que ya tiene el TTable, más los que se van a necesitar....


La franja horaria es GMT +2. Ahora son las 12:57:27.

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