Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-12-2005
kman kman is offline
Miembro
 
Registrado: dic 2005
Ubicación: República Dominicana.
Posts: 67
Poder: 19
kman Va por buen camino
Validar un Dbedit?

Saludos.

Señores soy nuevo en la programación y tengo un pequeño problema:

Tengo un formulario conteniedo varios dbedit's pero hay uno (CODIGO) el cual quiero validarlo en el evento beforepost de la tabla desde un bitbotton para que si existe el valor del dbedit en la tabla que no se repita el mismo.
Responder Con Cita
  #2  
Antiguo 02-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por kman
Señores soy nuevo en la programación y tengo un pequeño problema:
Pues bienvenido al mundillo de la programación y al clubdelphi. Te invito a leer, antes que nada, la guia de estilo (vínculo en mi firma)

Cita:
Empezado por kman
Tengo un formulario conteniedo varios dbedit's pero hay uno (CODIGO) el cual quiero validarlo en el evento beforepost de la tabla desde un bitbotton para que si existe el valor del dbedit en la tabla que no se repita el mismo.
Francamente creo que te has hecho bolas tratando de explicarte. Supongo que lo que queres simplemente es validar el valor para que no se repita con alguno existente en la base de datos, con independencia de cual sea el evento/método donde se haga. (eso de en un beforepost desde un bitbotton me ha hecho trizas.. )

El lugar adecuado para validar valores de los campos es precisamente el evento OnValidate del TField asociado al mismo. Este evento se disparará justamente cuando sea necesario validar el campo, independientemente de si su valor proviende de una rejilla, un TDBEdit o asignado por código.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 02-12-2005
kman kman is offline
Miembro
 
Registrado: dic 2005
Ubicación: República Dominicana.
Posts: 67
Poder: 19
kman Va por buen camino
Gracias jachguate por tu repuesta, y por supuesto, me volvi un lio con lo del beforepost
Responder Con Cita
  #4  
Antiguo 03-12-2005
kman kman is offline
Miembro
 
Registrado: dic 2005
Ubicación: República Dominicana.
Posts: 67
Poder: 19
kman Va por buen camino
Hola de nuevo!

Mi nueva pregunta es: y como valido el TFIELD?
Me gustaría un ejemplo, por favor.

Muchas gracias compañeros.
Responder Con Cita
  #5  
Antiguo 03-12-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
y por que no tomas el valor que tiene el dbedit haces una consulta sql, es decir un select y si es empty entonces es por que ya esta creado.

Pues pienso, es una salida facil pero no debe ser la mejor
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas
Responder Con Cita
  #6  
Antiguo 03-12-2005
kman kman is offline
Miembro
 
Registrado: dic 2005
Ubicación: República Dominicana.
Posts: 67
Poder: 19
kman Va por buen camino
Cita:
Empezado por el_barto
y por que no tomas el valor que tiene el dbedit haces una consulta sql, es decir un select y si es empty entonces es por que ya esta creado.

Pues pienso, es una salida facil pero no debe ser la mejor
Pues, porque soy tremendo novato y necesito de toda la buena ayuda que me puedan ofrecer, me das un ejemplo?

gracias.
Responder Con Cita
  #7  
Antiguo 03-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por kman
Mi nueva pregunta es: y como valido el TFIELD?
Me gustaría un ejemplo, por favor.
La idea de validar un field es simplemente verificar que el valor esté dentro de los parámetros válidos y si no, elevar una excepción.

por ejemplo:

Código Delphi [-]
procedure TForm1.Query1CodigoValidate(sender : TField);
begin
  if Query1Codigo.AsInteger < 0 then
    raise Exception.Create('Error: el código no puede ser menor que 0.  Verifique!')
end;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 03-12-2005
kman kman is offline
Miembro
 
Registrado: dic 2005
Ubicación: República Dominicana.
Posts: 67
Poder: 19
kman Va por buen camino
Cita:
Empezado por jachguate
La idea de validar un field es simplemente verificar que el valor esté dentro de los parámetros válidos y si no, elevar una excepción.

por ejemplo:

Código Delphi [-]
 procedure TForm1.Query1CodigoValidate(sender : TField);
 begin
   if Query1Codigo.AsInteger < 0 then
     raise Exception.Create('Error: el código no puede ser menor que 0.  Verifique!')
 end;



Hasta luego.

Comprendí tu ejemplo, e inclusive lo puedo aplicar para algunos casos en mi proyecto, pero parece que no me doy a entender, lo que quiero (a ver si no la hago bolas otra vez) es buscar o localizar un dato desde mi TABLA y compararlo con el que se esta introduciendo en el dbedit y asi no repetirlo que no sea con sentencias sql que me vuelvo bolas con ellas, o mejor aun cómo controlo el raise exception (ya que lo mencionas) que da delphi cuando intentas duplicar un registro que ya existe????

Perdón la molestia pero me urge esto para terminar un pequeño proyecto de la uni.

Gracias.
Responder Con Cita
  #9  
Antiguo 03-12-2005
kman kman is offline
Miembro
 
Registrado: dic 2005
Ubicación: República Dominicana.
Posts: 67
Poder: 19
kman Va por buen camino
Por fin lo solucioné:
Código Delphi [-]
 procedure form1.Button1Click(Sender: TObject);
 var field: tfield;
 VAR texto: string;
 begin
 texto:=Edit1.Text;
 if TABLA.Locate('CAMPO',texto,[]) then begin
 showmessage('DATO YA  EXISTE');
 end else begin
 tabla1.Edit;
 Field := Tabla1.FieldByName('CAMPO');
 Field.AsString := Edit1.Text;
 end;
 end;

Si tienen algún comentario sobre este código, se recibirá con mucho agrado, ah y gracias por los comentarios anteriores.
Responder Con Cita
  #10  
Antiguo 05-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por kman
Comprendí tu ejemplo, e inclusive lo puedo aplicar para algunos casos en mi proyecto
En tu caso, creo que lo mejor es lanzar una consulta contra la base de datos para deteriminar si un código está duplicado o no:

supongamos que qDup es un TQuery (o equivalente) tiene el siguiente SQL
Código SQL [-]
Select count(*) contador from tabla where codigo = :codigo;

en el evento on validate podríamos hacer algo como:

Código Delphi [-]
if TablaCodigo.IsNull then
else begin
  qDup.ParamByName('codigo').AsInteger := tablaCodigo.AsInteger;  
  qDup.Open;
  try
    if qDupCONTADOR.AsInteger > 0 then
      raise Exception.CreateFmt('Error: el código %d ya existe y no puede '
                + 'ser duplicado.  Verifique!', [tablaCodigo.AsInteger]);
  finally
    qDup.Close;
  end;
end;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #11  
Antiguo 13-03-2007
moyo18 moyo18 is offline
Miembro
 
Registrado: mar 2007
Posts: 11
Poder: 0
moyo18 Va por buen camino
usando este codigo

Código Delphi [-]
procedure form1.Button1Click(Sender: TObject);
 var field: tfield;
 VAR texto: string;
 begin
 texto:=Edit1.Text;
 if TABLA.Locate('CAMPO',texto,[]) then begin
 showmessage('DATO YA  EXISTE');
 end else begin
 tabla1.Edit;
 Field := Tabla1.FieldByName('CAMPO');
 Field.AsString := Edit1.Text;
 end;
 end;

para ver si un dato esta en la tabla ya y q no se guarde si es repedido lo pongo todo pero me sale aunq no este repedido el mismo mensaje q ya esta repetido y no se guarda.


este es mi codigo

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
field: string;
texto: string;
begin
 field:='userID'  ;
 texto:=DBEdit2.Text;
 if ADOTable1.Locate(field,texto,[]) then
  begin
   showmessage('DATO YA  EXISTE');
  end
 else
  begin
   Maskedit1.visible := false;
   Maskedit2.visible := false;
   Maskedit3.visible := false;
   Maskedit4.visible := false;
   ADOTable1.Edit;
    DBEdit9.text := Pri;
    DBEdit2.text := Maskedit1.Text ;
    DBEdit6.text := Maskedit2.Text ;
    DBEdit8.text := Maskedit3.Text ;
    DBEdit10.text := Maskedit4.Text ;
    ADOTable1UserID.AsString := DBEdit2.text;
    ADOTable1LastName.AsString := DBEdit3.text;
    ADOTable1Name.AsString := DBEdit4.text;
    ADOTable1Address.AsString := DBEdit5.text;
    ADOTable1PostalCode.AsString := DBEdit6.text;
    ADOTable1City.AsString := DBEdit7.text;
    ADOTable1Phone.AsString := DBEdit8.text;
    ADOTable1Email.AsString := DBEdit9.text;
    ADOTable1Birthday.AsString := DBEdit10.text;
   ADOTable1.Post;

   DBEdit3.Text := '' ;
   DBEdit4.Text := '' ;
   DBEdit5.Text := '' ;
   DBEdit7.Text := '' ;
   DBEdit9.Text := '' ;
   Maskedit1.Text := '' ;
   Maskedit2.Text := '' ;
   Maskedit3.Text := '';
   Maskedit4.Text := '' ;
   combobox2.visible := false;


  end;
end;
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 14:34:27.


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