![]() |
Validar con un DBEDit
Cordial saludo compañeros
estoy pasando mi antiguo programa, que tenia en delphi y paradox, y pasarlo a delphi 2010, usando firebird e IBX como conección. Estoy usando una tabla pequeña donde hago las pruebas la cual la he creado asi
En el IBDataset en la opción InsertSQL tenemos
Para capturar la información estamos usando unos DBEdit y un navegador. Todo funciona muy bien, pero lo que necesito es como poder capturar la información antes de escribir el DBEdit el campo en la tabla, para poder verificarla y que solo este un codigo en la tabla. Esta opción la podemos hacer con un Edit, pero deseamos hacerlo con un DBEdit, para que el codigo haga el trabajo. Lo hemos tratado de hacer, usando los eventos OnChange y OnDataChange, y no fue posible hacerlo. De no ser posible, cual es la mejor forma de hacerlo. Agradeciendo de antemano su colaboración |
La mejor opción:
En los componentes de base de datos seguramente tienes un evento BeforePost. Es este evento deberías poner tu código de validación o buscar el número que le asignarás. Por ejemplo, en mis programas hago algo parecido a esto:
Un caso real de clientes en mi aplicación:
|
Cordial saludo
Primero que todo mis mas sinceros agradeciemientos por tu respuesta, la he tenido encuenta, pero voy a exponer un poco más la necesidad. Tenemos el DBEdit, donde capturamos el codigo, lo que necesitamos es que al momento que el usuario salga del DBEdit o Pulse la Tecla Enter, Se tome el dato digitado por el usuario, y se lleva a un Query se verifica si el codigo existe y luego se decide que se hara. Como se puede observa necesitamos validar la información antes que se grabe en el campo del registro la información, para que no cree el error. Espero haber explicado correctamente el problema y Agradezco de antemano la atención prestada |
El evento OnChange del campo persistente parece el lugar más adecuado donde anclar esa comprobación.
Saludos. |
Yo al evento OnChange le veo un problema y es que se lanza por cada caracter que escribes, me parece mejor en el evento OnExit del control.
Un Saludo. |
Hola
Yo no usaría un DBEdit, si no un sencillo Edit. Con esto lo que se escriba no tendrá relevancia hasta que se decida que hacer con el dato. Saludos |
Con un sencillo Edit, lo tenemos funcionando en el momento, pero queremos llevar la evolución, a usar un DbEdit mi querido amigo.
Para el evento OnExit, lo que sucede es que primero me escribe la información del Campo en la tabla, y luego me dispara el evento, lo que no serviria para el proposito, pues el problema que se presentaría es que saldria un error de SQL. De antemano les agradezco la atención y sus respuestas, pero sigue el hilo, ya que no he podido resolver el problema. |
Hola
Me voy por la opción de duilioisola, es la lógica. Si la tabla esta en modo insert o edit busca el dato por medio del query si lo encuentra entonces envía el mensaje y no graba nada. Sigo pensando que la mejor opción por seguridad es el edit ya que no esta directamente ligado a la tabla, si lo tienen así no lo modificaría. Saludos |
Hola.
Estoy de acuerdo con mi amigo Caral que con un TEdit se simplifica el tema. Pero si aún deseas hacerlo con un TDBEdit, creo que el evento indicado para evaluar la existencia (o no) es OnSetText del campo en cuestión. El evento OnSetText se dispara cuando un valor es asignado a la propiedad Text del TField, pero antes de ser almacenado. Entonces: En el código superior asigno el evento en tiempo de ejecución para dar mayor claridad, pero si tenes creado el campo persistente lo podés hacer desde el Object Inspector. Saludos. |
Bueno creo que lo mejor es evolucionar a una solución dual, usar DBEdit y Edit, y seguir buscando una solución para el DbEdit, ya que no ha sido poco lo que he buscado en el foro, y como todo, alguna solución debe de tener, depronto no la he sabido buscar.
|
Gracias EcFisa, lo ensayo de inmediato y si algo publicaremos aqui el codigo para que nuestro amigo Caral lo incorpore a su foro. Te comento luego como me va con esta propuesta.
|
Hola
Cita:
Saludos |
Cita:
¡Cuál es el foro de Caral, que no lo conozco! Hey, Caral que no me contaste que tenes foro propio... esa no me la sabía. Fuera sarcamos, para tu información no hay inconvenientes en que ambos foros compartan enlaces y material. De hecho en algunas ocasiones desde ambos lados se ha remitido al otro. Y si Caral decide compartir lo que tiene y sabe en ambos sitios ¿Cuál es el problema? Aquí puede consultar sus ejemplos de facturación como así también el propio en DA, por ejemplo. Caral está en la libertad de compartir con quien se le raje la gana lo que el publique. Y que yo sepa, nadie pero nadie, es dueño del código que se ponga en cualquier foro. Ha... y eso no es plagio. Plagio sería si uno se autonombrara autor; algo que Caral no ha hecho, y estoy seguro que nunca hará. Es más, siempre que ha sido necesario agradeció y/o citó a quien le proporcionó ayuda y le enseñó. Si está al alcance del público ¿cuál es el problema? Para algo está el foro, favorecer a la comunidad en general y no para únicamente y en particular a quien pregunta y hay que responderte en secreto. Leete la guía de estilo. Saludos, |
Hola
Aveces las palabras se mal interpretan, suele pasar. Lo mejor es esperar para ver que es lo que quiso decir el amigo servicomp, tal vez fue un simple comentario. Saludos |
Hola Marcos.
Cita:
Saludos. |
Solicito mil disculpas a todos ustedes y muy especialmente al señor caral, por el comentario que escribí sobre el foro suyo, en realidad lo que había querido decir es sobre el tutorial que esta realizando, y que se ha publicado por este medio, se que muchos de los compañeros lo están leyendo y siguiendo.
Por ultimo espero que las disculpas sean aceptadas, y continuar adelante en el aprendizaje. |
Hola
Gracias por la aclaración, con eso es suficiente, no hace falta disculparse, fue un mal entendido. En lo que pueda ayudarte y este a mi alcance, con gusto. Saludos |
Tienes razón Marc, en el OnChange del campo persistente, no en el control de pantalla que lo muestra, pues este último se lanza por cada carácter tecleado o eliminado.
Un Saludo. |
Duda:
Cita:
Your Friend StartKill Lima-Perú //------------- |
Cita:
Está en los primeros hilos del foro Firebird e Interbase: Tutorial (como empezar con Firebird) Novatos. Un saludo. :) |
La franja horaria es GMT +2. Ahora son las 22:03:32. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi