Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-10-2006
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 22
Manuel Va por buen camino
que es más rápido query o filtrar tabla?

Hola amigos del foro, según yo, la query, pero me gustaría saber por que. Gracias por leer este hilo.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
  #2  
Antiguo 25-10-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Suponiendo que la base de datos sea cliente servidor, será muchos más rápido la consulta, porque solamente traerá del servidor los registros que obtenga la consulta, es decir el tiempo de respuesta irá en proporción a los datos que obtenga.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 25-10-2006
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 22
Manuel Va por buen camino
si marcos es cliente servidor, ahora mi duda al hacer esto:

Código Delphi [-]
tabla.filtered := True;
tabla.filter = 'precio > 300';

al usar tablas (en este caso el componente ttable), el filtro trae solo los registrosfiltrados del servidor, o a todos?, o sea ttable siempre los trae a todos y después se filtran?.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
  #4  
Antiguo 25-10-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Habría que ver las características de la base de datos con filtros, pero éstos generalmente lo que hacen es no mostrar los registros que no cumplen las normas de filtrado pero viajen todos por la red..

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 25-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
ttable siempre los trae a todos y después se filtran?.
Así, mismo. Pues para poder filtrar debe tener el ttable Open con lo cual traes todos los regisotos, y despues filtrar.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #6  
Antiguo 26-10-2006
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 22
Manuel Va por buen camino
Cita:
Empezado por vtdeleon
Así, mismo. Pues para poder filtrar debe tener el ttable Open con lo cual traes todos los regisotos, y despues filtrar.

Saludos
De acuerdo a eso, yo en la empresa que me inicie programando en delphi, tenían como política, abrir todas las tablas cuando se cargaba el data modulo. ahora de que estamos hablando de esto, eso era nefasto o no es tanto así?
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
  #7  
Antiguo 27-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Bueno, como dices es una "politica" de la empresa, pero de decirte de que si es una mala practica, pues para mi si lo es.

Yo prefiero SIEMPRE abrir o activar mis dataset cuando lo vaya a usar y liberarlo cuando ya no sea necesario tenerlos.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #8  
Antiguo 27-10-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
El hecho de tener todas las tablas abiertas desde el principio de la aplicación hasta el final, no tiene apenas penalización en el rendimiento, sino son muchas unas 50 a 70. La aplicación no tiene que estar todo el tiempo abriendo y cerrando tablas que también supone una baja en el rendimiento. El problema que veo es el riesgo, si se bloquea el ordenador y hay que apagarlo o se va la luz, al tener todas las tablas abiertas siempre puede corromperse alguna.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 27-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Quizá no consuma muchos recursos tener abiertas las tablas pero sí que se alenta el inicio de la aplicación si se abren todas al comienzo. Podría optarse por no cerrar las tablas sino hasta el término de la aplicación, pero abrirlas sólo la primera vez que se usen.

// Saludos
Responder Con Cita
  #10  
Antiguo 27-10-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Yo salvo excepciones suelo optar por la opción que apunta Román, si son pocas tablas, no más de 40. Porque también el dejarlas cerradas tiene un problema que se nos olvide en el código fuente abrir una tabla que se utiliza poco y cuando el usuario va a realizar esa función obtiene una excepción.

Si están todas abiertas desde el principio uno tiene la seguridad de que no va a ocurrir este problema.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #11  
Antiguo 27-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Esto, si se tiene la practica de tener todos los dataset en un Datamodulo. De lo contrario creo que lo mejor es abrir el dataset cuando se necesite, para que asi traiga los registros actualizados.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #12  
Antiguo 27-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Estoy contigo Vtdeleon, de hecho, ahora mismo uso ambas cosas, el Datamodule y datasets en los forms.

En el datamodule un bucle abre todos los datasets.
En las ventanas, heredo de una que abre el dataset principal al crearse, y cierra todos los datasets al cerrarse la ventana. Resulta tremendamente cómodo olvidarse de hacerlo a mano. Las consultas que deben abrirse en ciertas ocasiones, claro está, se abre cuando se necesite.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 27-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
No me acabo de aclarar con lo que dice Lepe .

Tienes en el DataModule , todas las tablas (supongamos que usamos la paleta BDE) , y en el form ¿Qué es lo que tienes ? ¿Tablas también ? ¿DataSource apuntando a una tabla?

en el datamodule un bucle abre todas las tablas ¿Qué tipo de función abre todas las tablas ,podrias ponerla?

Pero si estan todas las tablas abiertas , cuando se cierran y como ??

Sobre los Tquerys no pregunto , por que esto si parece claro , se abren y cierran cuando se necesiten .
Responder Con Cita
  #14  
Antiguo 27-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Mi opinion como aprendiz es:
Usar solo el conector de la base de datos en el datamodule
Usar Tablas solo en caso extremadamente necesario o por comodidad
Usar Query o sentencias sql lo mas que se pueda.
A nivel de revision de codigo o forms es mucho mas facil cuando se tiene el componente (Table o Query) en el form, de esa manera me organizo y me funciona, que mas da tener cuantos componentes de tablas o querys quieras en el form, son invisibles y no me molestan.
Creo que es importante abrir y cerrar la tabla que no se este ocupando, realmente hace muy lento el programa si se tienen todas abiertas, el mio tiene mas de 50 y con mucha informacion, si abriera todas las tablas a la vez me tomaria todo el cafe de la cafetera antes de que el programa arrancara, no tengo tanta paciencia.
Que consuma recursos o no, la verdad no importa, cuanto vale el tiempo, si uno tiene todas las tablas abiertas y hay un bajo de tension se puede fastidiar la base de datos completa, para mi es un riesgo.
Por otra parte para David, la tabla trae toda la informacion que contenga, si es poca, usala, de otro modo te aconsejo, como lejitimo aprendiz, usar querys, son mas rapidas y seguras.
Saludos.
Responder Con Cita
  #15  
Antiguo 27-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Caral
que mas da tener cuantos componentes de tablas o querys quieras en el form, son invisibles y no me molestan
Es aconsejable tener todos los datasets en módulos de datos y no en los formularios. Por una parte, si en algún momento deseas cambiar de componentes (IBX por Fib, BDE por ADO, Zeos por MyDac, etc., etc.) la migración te será más sencilla; todos los formularios quedarán prácticamente sin cambios y únicamente tendrás que reemplazar componentes en lugares muy específicos que son los data module.

Por otro lado, la invisibilidad es realtiva. Ciertamente no son componentes que se vean en el formulario, pero sí en el código, que pronto se convierte en una mezcla de código visual para la interfaz de usuario, y código de negocios, la lógica de la aplicación. Llega un momento en que cualquier cambio, sea en la lógica o sea en la interfaz provoca efectos secundarios en la otra parte y el mantenimiento de la aplicación se hace muy pesado.

// Saludos
Responder Con Cita
  #16  
Antiguo 27-10-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Estoy con Román, yo desde que salieron los DataModulos los he utilizado siempre en todas las aplicaciones.


Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #17  
Antiguo 27-10-2006
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 22
Manuel Va por buen camino
yo uso DataModulos, a pesar que para muchos de mis procesos me he ido por las querys que son más rápidas y más versatiles, a pesar que para algunas cosas uso TTABLE.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
  #18  
Antiguo 27-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Ya veo la idea , pones todas las tablas y todos los Querys en el DataModule , pones en el Form un dataSource y en codigo DataSource.DataSet.

Luego si quieres cambiar de base de datos , insertar otro DataModule , y pones las tablas y Querys con el mismo nombre que Tenian en el otro DataModule , eliminas el anterior DataModule y guardas el nuevo DataModule , con los componentes nativos de la nueva base de datos , con el mismo nombre .

De esa manera , puedes cambiar de base de datos , de una manera rápida y eficaz .

Lo que no me queda claro , es el momento , de abrir y cerrar tablas , en el DataModule , no es mejor abrir las tablas de cada formulario en el Evento TFormOncreate y cerrarlas en ondestroy ???
Responder Con Cita
  #19  
Antiguo 27-10-2006
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 22
Manuel Va por buen camino
Cita:
Empezado por David

Lo que no me queda claro , es el momento , de abrir y cerrar tablas , en el DataModule , no es mejor abrir las tablas de cada formulario en el Evento TFormOncreate y cerrarlas en ondestroy ???
David dos cosas, abrir y cerrar te puede traer una preocupación más, y otra cerrar y abrir puede ser lento sobre todo en sistema cliente/servidor, por eso yo habro en el data modulo, y cierro solamente cuando cierro y aplicación, bueno ni hago eso, por que al cerrar la aplicación delphi cierra todas la tablas. Yo recomiendo el uso de querys. más fáil, más rápido, y totalmente portable.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
  #20  
Antiguo 28-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por roman
Es aconsejable tener todos los datasets en módulos de datos y no en los formularios.
Bueno, tiene sus pro y contras. Particularmente uso las dos técnicas de usar o no el Datamodulo. Dependiendo de la envergadura o el análisis que yo le haya hecho al futuro sistema.

La práctica de cada quien.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema al filtrar un Query entre fechas judit25 Conexión con bases de datos 18 20-04-2007 00:03:38
Filtrar una tabla con 2 rangos maravert Impresión 2 30-04-2006 19:10:43
Filtrar Tabla jovehe Tablas planas 6 15-09-2004 22:06:32
como filtrar una tabla andre navarrete Varios 5 11-08-2004 06:17:19
Filtrar una tabla Tangela Conexión con bases de datos 1 29-05-2003 00:56:37


La franja horaria es GMT +2. Ahora son las 05:08:23.


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
Copyright 1996-2007 Club Delphi