Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Validar un DBEdit con delphi interbase (https://www.clubdelphi.com/foros/showthread.php?t=34335)

servicomp 05-08-2006 19:53:24

Validar un DBEdit con delphi interbase
 
Hola compañeros.
He logrado conectar m,i base de datos en interbase a mi programa en Delphi, y usando una forma con DBEdit. Pero quiero hacer una consulta por un campo llave, y deseo saber si el campo que se esta entrando esta repetivo. Se que hay dos maneras de hacerlo según lo que he leido en el foro. El primero es capturando el error y el segundo que creo es el mejor es usando una consulta SQL en el evento OnValidate del DBEdit el caul ocurre antes de beforeInsert y que según otros enlaces funcionan mucho mejor

Como coloco la sentencia SQL, ese es mi problema en esta etapoa de aprendizaje. No tengo ni idea de como hacerlo. En pocas palabras entre en begin end del evento no se que colocar para revizar si la información existe y si existe me la traiga los demás datos a los DBEdit respectivos.

Agradeciendo de antemano la atención prestada y discupen si he colocado esta pregunta en el lugar equivocado, pues creo que es una Preguta de conexión de Datos con Delphi y no de Interbase

roman 05-08-2006 20:06:15

Hola,

No sé por qué consideras mejor el lanzar una consulta SQL para la validación. Hacer eso significa una carga extra para la aplicación. En lugar de un viaje al servidor para la inserción, debes hacer dos.

No obstante lo anterior, yo he hecho pre-validaciones con el fin de que el capturista no me vea con malos ojos cuando le lance el mensaje de error luego de media hora de captura :D

Pero en ese caso lo que hago es pedirle los datos de la llave a parte en Edits normales. Cuando da clic en OK, uso esos datos para lanzar la consulta de búsqueda y entonces es cuando inserto el nuevo registro con la llave capturada y presento DBEdits para el resto de los datos.

// Saludos

vtdeleon 05-08-2006 20:22:05

Saludos

Cita:

Empezado por servicomp
y el segundo que creo es el mejor es usando una consulta SQL en el evento OnValidate del DBEdit el caul ocurre antes de beforeInsert y que según otros enlaces funcionan mucho mejor

Nunca he utilizado ese evento para tal caso, ni uno DBedit para buscar un dato.

Yo utilizaria un Edit normal y al presionar enter puedes buscarlo de la sigte 2 formas:

1ro - Con el método Locate del DataSet.
Código Delphi [-]
if table1.Locate('campo1',Edit1.Text,[]) then begin//Si se encuentra
//rutinas
end else begin//De lo coantrario
//rutinas
end;

2do - Agregar un Query.
Código Delphi [-]
with Query1 do begin
  sql.Text:='Select Count(*) from tabla1 where campo1=:valor';
  ParamByName('valor').AsString:=Edit1.Text;
  If Fields[0].AsInteger >0 then begin //si por lo menos hay mas de un registro
    //rutinas
  end else begin //de lo contrario
   /rutinas
  end;
end;

Bueno, esta es una de las forma de hacerlo.

xander 05-08-2006 21:35:09

En interbase la mejor forma de hacer esto es programarlo en un trigger... en el trigger validas el dato que esta por ingresar y si no es válido entonces lanzas una bonita excepción que se propagará hasta el cliente que trato de hacer la operación... y con esto ya estará validado para que si despues quieres actualizar desde una página web u otro tipo de cliente ese trabajo ya estará hecho y la integridad de tus datos a salvo.

servicomp 05-08-2006 21:44:51

Bueno de todo hay que probra en la vida, probare con sus sugerencias que al parecer son las correctas y les digo como me fue

agradeciendo sus respuestas y si alguien quiere agragar una experiencia más, aqui la esperamos.

servicomp 05-08-2006 22:29:08

barado en el intento
 
bueno cambie mi forma de programar y mi DBEdit1 donde manejaba lo cambie por un Edit1. Asi que coohago para grabar un registro. Si cambio el InsertSQl en el IBDataset no se me activa el DataSet. como le digo que la información que estama en mi dbedit1 ya se encuentra en un Edit1.text.

vtdeleon 05-08-2006 22:46:28

Cita:

como le digo que la información que estama en mi dbedit1 ya se encuentra en un Edit1.text.
Eeh?:confused:

Explicanos mejor y pon algo de codigo tuyo aqui. Ademas chequea bien la forma de escribir pues aveces te faltan letras o pones otras letras.

Saludos

courtois 06-08-2006 07:44:09

en el evento BeforePost asigna el valor de tu Edit al campo

servicomp 06-08-2006 16:27:11

Com gusto mandare un codigo y mejorare mi escritura, gracias


La franja horaria es GMT +2. Ahora son las 12:50:56.

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