Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-04-2012
escorpionrojo43 escorpionrojo43 is offline
Miembro
 
Registrado: abr 2010
Posts: 89
Poder: 15
escorpionrojo43 Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Hola, el error yo creo que te da por el OnClose de tu formulario de busqueda:

Código Delphi [-]
 //liberas tu formulario antes de tiempo
 //comenta esta linea y prueba
 freeandnil(FBuscaPaciente);

Saluditos
efectivamente ese era el problema
Gracias caro.
Responder Con Cita
  #2  
Antiguo 23-04-2012
escorpionrojo43 escorpionrojo43 is offline
Miembro
 
Registrado: abr 2010
Posts: 89
Poder: 15
escorpionrojo43 Va por buen camino
Casimiro
me ha causado una gran inquietud lo que dijiste podrias decirme lo peligroso del codigo por favor?
Responder Con Cita
  #3  
Antiguo 23-04-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Cita:
Empezado por escorpionrojo43 Ver Mensaje
Casimiro
me ha causado una gran inquietud lo que dijiste podrias decirme lo peligroso del codigo por favor?
No sé que esté pensando Casimiro, pero de algo si estoy seguro, 1 - SQL Injection, 2 - Bajo rendimiento, ya que cada vez que mandas a un motor una consulta SQL hace que el motor tenga un rendimiento mucho menor que si ejecutaras un procedimiento almacenado o vista.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #4  
Antiguo 23-04-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Bueno, es peligroso en 1er lugar porque es muy prospenso a una injección de SQL. En este hilo se ha comentado al respecto.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 23-04-2012
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 mightydragonlor Ver Mensaje
2 - Bajo rendimiento, ya que cada vez que mandas a un motor una consulta SQL hace que el motor tenga un rendimiento mucho menor que si ejecutaras un procedimiento almacenado o vista.
A ver, esta parte no me queda clara. ¿Que los motores de bases de datos no están precisamente para mandarles consultas? En este caso -buscar pacientes- ¿cómo nos ayudaría un procedimiento almacenado?

// Saludos
Responder Con Cita
  #6  
Antiguo 23-04-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Cita:
Empezado por roman Ver Mensaje
A ver, esta parte no me queda clara. ¿Que los motores de bases de datos no están precisamente para mandarles consultas? En este caso -buscar pacientes- ¿cómo nos ayudaría un procedimiento almacenado?

// Saludos
No es que no estén preparados, pero a un nivel mas técnico, cuando mandas un Select bla bla bla esta instrucción debe ser parseada, estudiada para conseguir un plan de ejecución óptimo y luego ejecutada, cuando creas un procedimiento almacenado o una vista, lo anterior solo se hace una vez, cuando se crea, el resto de las veces ya no tiene por que hacerlo, por que ya lo tiene definido, pero si se hace algún cambio en índices, cuando se ejecute nuevamente la vista o procedimiento almacenado, se vuelve a generar el plan de ejecución y se sigue usando siempre, excepto si vuelve a cambiar algún índice, pero cuando mandas un select directo a la base de datos, esto se hace siempre, imagina que tienes 1000 usuario simultaneos haciendo esto, cada minuto, la diferencia es salvaje, espero te haya ayudado en algo, el tema es bien complejo y muy extenso, pero traté de hacerlo de la mejor manera.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #7  
Antiguo 23-04-2012
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
Gracias. Entonces, ¿lo recomendado es llenar la base de procedimientos almacenados e invocarlos desde la aplicación cliente?

// Saludos
Responder Con Cita
  #8  
Antiguo 23-04-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Gracias. Entonces, ¿lo recomendado es llenar la base de procedimientos almacenados e invocarlos desde la aplicación cliente?

// Saludos
Actualmente es lo que hago, estoy haciendolo en Oracle, MS-SQL y Firebird, con muy buenos resultados, teniendo una ventaja adicional al rendimiento, cuando debo hacer un cambio en la lógica del procedimiento almacenado, sin cambiar parámetros de entrada y salida, no tengo que generar ningún cambio en el programa =)
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #9  
Antiguo 23-04-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Gracias. Entonces, ¿lo recomendado es llenar la base de procedimientos almacenados e invocarlos desde la aplicación cliente?

// Saludos
No me atrevería a asegurar que todas las consultas se llevaran a un procedimiento almacenado y/o vistas en el lado servidor como para utilizar tan libre la palabra "llenar" pero... en lo posible yo diría que hay que dejarle al motor las cosas que sabe hacer bien.

Y justamente si tienes consultas estáticas, que no vas a cambiar nunca (*) en la aplicación y que se va a estar lanzando cada x segundos en varios puestos, es mejor dejarla ya preparada y servida en el servidor e invocar a las vistas y/o procedimientos almacenados.

(*) No al menos hasta que venga un cambio en los requisitos, restricciones y/o en el rediseño o proceso de reingeniería para la aplicación.

Esto lleva también otra ventaja extra: hace más seguro nuestro al sistema y reduce también los peligros de una injección de código (a menos claro que el usuario tenga plena libertad de mandar a hacer lo que se le ocurra).

Yo al menos soy creyente de disponer vistas. Me resulta mucho más claro.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #10  
Antiguo 23-04-2012
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Bueno lo que yo hago en esos casos es poner el codigo de busqueda en una funcion de clase (class function)

Código Delphi [-]
class function TfrmBusqueda.Buscar(DatoaBuscar:string;Var ID:integer):boolean;

En el parametro de salida retorno el codigo encontrado.
La llamada quedaria asi:

Código Delphi [-]
If TfrmBusqueda.Buscar(MIparametro,I) then
//Trabajar con el retorno (el parametro I)


Disculpa si no soy mas explicito pero es q de momento no tengo delphi a mano.

Espero te sirva

Saludos
Responder Con Cita
  #11  
Antiguo 24-04-2012
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 22
PepeLolo Va por buen camino
En mi caso todas las consultas para explotación de información las almaceno en la BBDD. Así no hay que generar nuevas versiones de la aplicación. Si es necesario un SP para a consulta, se crea y es transparente para el usuario, en pocos minutos o en muchos.... Depende de la complejidad, el usuario dispone de una consulta que hará uso de (SQL, SP o Vistas)
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
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
Ventana modal que muestra un diálogo al abrirse (no se ve la ventana) Lord Delfos Varios 2 12-02-2010 04:50:30
Como evitar que se abra la ventana de busqueda, al hacer doble clic sobre un acceso d QuarkBcn Windows 0 24-10-2007 11:28:00
Ventana hija en un marco (Frame o Panel) de la ventana padre birmain Varios 2 14-10-2007 09:27:56
Duda Puntual: Ventana de Busqueda Catálogos Grandes. Paoti OOP 2 20-06-2007 23:32:44
como mostrar una ventana con base al resultado de una busqueda Nelly Varios 3 02-02-2006 18:16:20


La franja horaria es GMT +2. Ahora son las 23:30:13.


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