Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-05-2019
Mteje Mteje is offline
Miembro
 
Registrado: abr 2015
Posts: 20
Poder: 0
Mteje Va por buen camino
Querys fijos o multiples dinamicos?

Buenas noches gente

Mi consulta es la siguiente, tengo varias units donde algunas son principales (con formulario) y otras que sirven de apoyo.
La cuestion es: es conveniente que un procedimiento si necesita consultar a la base de datos algo cree un componente TADOQuery dinamicamente y al finalizar el procedimiento lo destruya? o conviene que la unit tenga una variable TADOQuery global que se conecte cuando inicia el software y permanezca siempre conectada?
Mas que nada por la cantidad de conexiones activas cuando el software empiece a crecer ya que esta en etapas inciales.

Desde ya Muchas gracias.
Responder Con Cita
  #2  
Antiguo 23-05-2019
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Siempre es conveniente crear un recurso cuando se lo necesita y liberarlo cuando ya no se lo precise, es el tratamiento mas eficiente de los mismos. Es decir, ¿ Para que tener todas las consultas abiertas consumiendo recursos todo el tiempo si sólo se usarán algunas en determinado momento ?
Por otro lado, la creación de recursos por demanda no impide la utilización de todos ellos en un momento si eso fuera necesario.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 23-05-2019
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Siempre es conveniente crear un recurso cuando se lo necesita y liberarlo cuando ya no se lo precise

Compañero... saludos .


Yo en particular hago una cosa mixta, es decir, si preveo que un recurso se va a utilizar con frecuencia lo dejo creado para darle más agilidad a los procesos. Por otro lado, y para temas poco habituales, los creo y destruyo una vez usados.
__________________
Be water my friend.
Responder Con Cita
  #4  
Antiguo 23-05-2019
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Depronto este hilo, te ayude un poco: Eficiencia de consultas paramétricas vs consultas estáticas
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #5  
Antiguo 28-05-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Mteje Ver Mensaje
La cuestion es: es conveniente que un procedimiento si necesita consultar a la base de datos algo cree un componente TADOQuery dinamicamente y al finalizar el procedimiento lo destruya? o conviene que la unit tenga una variable TADOQuery global que se conecte cuando inicia el software y permanezca siempre conectada?
Mas que nada por la cantidad de conexiones activas cuando el software empiece a crecer ya que esta en etapas inciales.
Creo que en este caso está confundiendo 2 cosas diferentes (o las estás mezclando cuando no debería ser así).
Una cosa es la consulta TADOQuery y otra cosa es la conexión TADOConnection.

Abro paréntesis.
En este caso ADO tiene cierta culpa, porque en un TADOQuery puedes definir también la cadena de conexión. En algún caso esto puede ser beneficioso (para ahorrar un componente TADOConnection), pero en otros puede ser confuso.
Cierro paréntesis.

Crear un TADOQuery es poco costoso al igual que otros componentes. Lo que realmente tarda es "realizar la conexion" (sea desde un TADOConnection o desde un TADOQuery).
Además lo que tampoco sería nada correcto es crear una conexión por cada TADOQuery que necesitemos.

En este caso estoy de acuerdo con [Casimiro] y optaría (normalmente lo hago así) por una solución mixta.

1) Crear un TADOConnection en un lugar accesible y conectarlo.
2) Crear TADOQuery cuando sea necesario y destruirlos cuando ya no se usen y conectarlos a elemento del punto 1.



De esta forma:
  • No consumes tiempo innecesario en conectar.
  • No consumes más conexiones de las necesarias.
  • Creas los componentes cuando los necesitas y los destruyes cuando ya no son necesarios (en tu caso los TADOQuery). Por lo tanto, no consumes memoria nnecearia.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 28-05-2019 a las 14:16:22.
Responder Con Cita
  #6  
Antiguo 28-05-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
En este caso estoy de acuerdoi con [Casimiro] y optaría (normalmente lo hago así) por una solución mixta.

1) Crear un TADOConnection en un lugar accesible y conectarlo.
2) Crear TADOQuery cuando sea necesario y destruirlos cuando ya no se usen y conectarlos a elemento del punto 1.

De esta forma:
  • No consumes tiempo innecesario en conectar.
  • No consumes más conexiones de las necesarias.
  • Creas los componentes cuando los necesitas y los destruyes cuando ya no son necesarios (en tu caso los TADOQuery). Por lo tanto, no consumes memoria nnecearia.
Me has leido el pensamiento
Responder Con Cita
  #7  
Antiguo 28-05-2019
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
A mi también me parece que se están mezclando cosas. Yo quisiera apuntar que "crear un componente TADOQuery dinamicamente y al finalizar el procedimiento destruirlo" es algo muy feo para hacer. Los componentes TADOQuery y similares están para una mejor organización del código, para empaquetar correctamente las distintas funcionalidades de un sistema. Crear compontes de este tipo al vuelo es lo mismo que insertar consutas SQL al vuelo sin ninguna organización, mezclando código de acceso a BD con código de gestión. Y eso es muy feo.

Los TADOQuery (y similares) deben situarse en tiempo de diseño en su respectivo DataModule y enlazar a ellos desde formularios y demás. En todo caso, lo que puede crearse al vuelo es el DataModule en sí, aunque tampoco lo veo muy necesario a no ser que hay una cantidad considerable de ellos. Todos los ADOQuery se conectan a un sólo TADOConnecion, como ya mencionó Neftalí, de manera que en ese aspecto no hay un uso extra de recursos.

// Saludos
Responder Con Cita
  #8  
Antiguo 28-05-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
...
Pienso igual. Ya sean "ADO", "IBX", "FIBplus", etc.
Responder Con Cita
  #9  
Antiguo 29-05-2019
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

La confusión fué mia que interpreté que la cuestión se trataba sobre dejar las consultas siempre conectadas o abrirlas y cerrarlas en la medida que se precisaran. Realmente no sé que fué lo que leí...

Aclarado ese punto coincido en que no se gana en la creación dinámica del componente en sí, siendo mucho mas conveniente situarlos en diseño en un TDataModule tal como ustedes indican y siempre he hecho.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Querys Dinamicos Soa Pelaez Varios 6 03-12-2015 15:19:20
Querys Dinamicos Y Rave Reports FENIXCH Impresión 4 17-07-2015 00:35:00
Agregar múltiples Campo de una tabla a múltiples TEdit y TdbEdit novato_erick Varios 21 21-08-2011 02:18:58
como generar ventas multiples (seleccionar multiples items) userdelphi Varios 4 30-12-2010 03:52:21
Valores Fijos de I.V.A. en un DBGrid gluglu Varios 1 28-11-2005 11:44:26


La franja horaria es GMT +2. Ahora son las 04:25:34.


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