![]() |
Ventana de Busqueda
Hola Companeros
tengo el siguiente problema. En mi aplicacion he puesto una opcion de busqueda de clientes, la opcion de busqueda funciona bien el problema es que me da error al pasa los datos a la ventana que lo llama.
al ejecutar esta parte del codigo me da un error access violation at address 00525133 la ventana de busqueda la tengo con la propiedad visible false y el formstyle es fsnormal. alguien me puede ayudar con esto? |
Hola: Podrias poner el codigo que realiza la consulta?
Saludos |
Cita:
|
Hola,
parece que cuando quieres rescatar el dato estás accediendo a algo que ya no existe, ¿porqué no pruebas a enviar el dato desde el mismo formulario de busqueda en lugar de rescatarlo desde el principal? Saludos. |
Este código es más peligroso que una caja de bombas :D
|
Cita:
que crees que podria hacer en ese caso eldioni? |
Cita:
|
Hola, el error yo creo que te da por el OnClose de tu formulario de busqueda:
Saluditos |
Cita:
Gracias caro. |
Casimiro
me ha causado una gran inquietud lo que dijiste podrias decirme lo peligroso del codigo por favor? |
Hola, ademas de lo que he comentado antes, despues haces un Destroy de tu formulario de busqueda que ya ha sido liberado.
Saluditos |
Cita:
|
Cita:
en vista de que nuestro companero aun no me dado respuesta y tu lo secundas en su comentario podrias decirme por favor que es lo peligroso de mi codigo para solucionarlo. y de que manera lo podrias hacer tu? gracias. |
Cita:
|
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, |
Es peligroso porque puedes estar haciendo algo que no sabes que lo estabas haciendo.
Aunque en este caso pueda parece bastante claro, nunca estás realmente seguro de que hace las cosas bien: que el open sea del query, que el close sea del sql ¿o era al revés?, que no haya un error con los begin end y esté llamando al close del formulario, etc. Además que para hacer depuración de código no sirve. Algunas veces se ha hablado de que existen empresas que tienen prohibido usar el with |
Cita:
// Saludos |
ok necesito documentarme mas al respecto.
gracias por la observación. ahora bien ya ven como ejecuto yo esa consulta. me podrian dar un buen ejemplo de como hacerlo. asi fue que me ensenaron y obviamente no me dijeron las consecuencias. Puede alguien poner el codigo de forma correcta para fines didacticos? gracias. |
Cita:
|
Gracias. Entonces, ¿lo recomendado es llenar la base de procedimientos almacenados e invocarlos desde la aplicación cliente?
// Saludos |
Cita:
|
Cita:
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, |
Lo que dice Delphius es muy cierto, hay caso en que los requisitos necesitan que hagas algo demasiado flexible y debas hacerlo en la aplicación y no tenga cabida en una vista o sp, hasta el momento no me he topado con ninguno, todo siempre lo mandamos a sps y vistas xD
|
Bueno lo que yo hago en esos casos es poner el codigo de busqueda en una funcion de clase (class function)
En el parametro de salida retorno el codigo encontrado. La llamada quedaria asi:
Disculpa si no soy mas explicito pero es q de momento no tengo delphi a mano. Espero te sirva Saludos |
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) :D
|
Para evitar la inyección de SQL, uso parámetros para los valores, identificando el tipo de parámetro esperado previamente. Por cierto esto incrementa la velocidad de preparación de SQL.
|
| La franja horaria es GMT +2. Ahora son las 10:13:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi