Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-08-2003
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 21
Er_Manué Va por buen camino
Question como validar un campo desde un dbgrid

Hola!

Tengo una aplicación que me muestra una tabla en un DBGrid, usando un TADODataSet para pasarle los datos al DBGrid. Necesito validar el valor introducido en el campo cantidad tiene que ser menor de 10000), y el evento onValidate del campo cantidad no me hace nada. ¿Cómo podría validarlo antes de que me muestre el error por defecto? o bien ¿Cómo podría capturar el error?

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 08-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Podrias hacerlo en el BeforePost del Dataset. Si no cumple con la condicion hacer un Abort

Tambien existe el evento OnPostError en los Datasets que sirve para capturar los errores producidos al intentar grabar un registro

Espero te sirva
Responder Con Cita
  #3  
Antiguo 08-08-2003
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 21
Er_Manué Va por buen camino
No me funciona en el evento beforePost() ni el onPostError()

Te explico como tengo todo:
  • * Tengo un ADODataSet con una serie de campos,entre los cuales hay uno que es cantidad de tipo TSmallIntField al cual le tengo puesta la propiedad MaxValue a 9999

    * Compruebo que el valor introducido no sea mayor que MaxValue en varios evento: onValidate() y en beforePost(). No llegan a ejecutarse ninguno de ellos, salta antes el error predefinido, diciendome que el valor introducido en mayor que el valor máximo permitido para ese campo.

    * En el evento onPostError() muestro un mensaje de error propio, que en este caso no se muestra.
Las modificaciones las realizo desde el dbGrid en modo insert() y edit() y no funciona en ninguno de los 2.
Responder Con Cita
  #4  
Antiguo 08-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Totalmente cierto lo que dices (eso me pasa por no probar las cosas primero )

Bueno, tal y como lo veo, tienes dos soluciones

1.- Quitas del TField el MaxValue y lo controlas tu "a pelo" como te indicaba en el mensaje anterior

2.- Pones un TApplicationEvents y controlas el evento OnException con un codigo mas o menos asi...

Código:
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
begin         //39428
  if TDBError(E).ErrorCode = 39428 then
    showmessage('Error de SIZE');
end;
Bueno, espero te sirva
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 11:18:45.


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