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 18-04-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
Hola a Todos con respecto al tema..

encontre este hilo el cual puede darle un nuevo rumbo a la solucion de este dilema.

si nos fijamos en el encontramos que efectivamente como decia nuestro compañero juanlaplata la validacion se debia hacer en el Evento OnValidate del QueryCANTIDAD.

en el hilo se encuentra un codigo dado por Roman q adecuandolo a lo q se tiene quedaria de la siguiente manera:

Código Delphi [-]
procedure Masdata.Query11CANTIDADValidate(Sender: TField);
begin
  if Sender.AsString = '' then
     raise Exception.Create('El Campo no Puede Quedar en Blanco!');  //Efectivamente valida el campo en blanco y no lo deja continuar hasta q digite algo
end;

y si agregamos el codigo para validar el numero de caracteres segun el ejemplo quedaria de la siguiente manera:

Código Delphi [-]
procedure TBDMasdata.Query11CANTIDADValidate(Sender: TField);
begin
    if Sender.AsString = '' then
    raise Exception.Create('El Campo no Puede Quedar en Blanco!');

    if Query11CANTIDAD.MaxValue >= 999999 then
      begin
        raise Exception.Create('El Valor Maximo es de 5!!');
      end;
end;

efectivamente el mensaje lo muestra pero ahora el problema radica en q asi escriban 2 numeros en todo caso muestra la validacion lo cual es erroneo ya q solo deberia salir si digitan mas de 5 numeros.

por lo tanto la validacion esta mal hecha ya e intentado varias maneras incluso la q se venia manejando al principio pero nada.

si alguien me puede dar su opinion acerca de la validacion seria muy importante Gracias.

Saludos
Responder Con Cita
  #2  
Antiguo 18-04-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
MaxValue es una propiedad del componente Query1CANTIDAD que establece el valor máximo del campo. Tú mismo la has puesto antes en 999999 y por tanto la comparación >= siempre es cierta. Lo que debes usar es el valor mismo el campo y compararlo contra MaxValue:

Código Delphi [-]
if Sender.AsInteger > Query1CANTIDAD.MaxValue then
  raise Exception.Create('El Valor Maximo es de 5!!');

// Saludos
Responder Con Cita
  #3  
Antiguo 18-04-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
Solucionado....

Primero Agradecerles a juanlaplata y a roman por sus opiniones fueron de gran importancia.

ahora siguiendo con el ejemplo de roman en el cual utilizaba el Sender.AsInteger o Sender.AsString funcionaba con el primero pero si lo utilizaba en mas de dos validaciones este no lo ejecutaba de la manera adecuada.

al final el Codigo q se utilizo fue el siguiente.

Código Delphi [-]
  
if Query11CANTIDAD.AsString = '' then
   begin
      Raise Exception.Create('El Campo Cantidad No Puede Quedar en Blanco!!');
   end;

if Query11CANTIDAD.AsInteger > 999999999 then
   begin
      Raise Exception.Create('El Numero Maximo de Caracteres es 10!!');
   end;

el primero valida q el campo no quede en blanco y el segundo valida q el numero de caracteres no sea superior a 9

Nuevamente Gracias por sus opiniones.
hasta la Proxima

Saludos...
Responder Con Cita
  #4  
Antiguo 29-04-2008
Avatar de laukri
laukri laukri is offline
Miembro
 
Registrado: dic 2007
Posts: 38
Poder: 0
laukri Va por buen camino
Question

Hola a todos!
Yo pongo el codigo en el onValidate del campo, y lanzo la exception... pero cuando la capturo?...
Los ubico un poco en la situacion... tengo que hacer un control de stock y quiero verificar que al momento de hacer la factura y al poner la cantidad que quiero del producto, este no supere el stock diponible...

Código Delphi [-]
 
procedure TDMDocumento.cdsDetalleCANTIDADValidate(Sender: TField);
begin
  dm.cdsArticulos.Open;
  dm.cdsArticulos.Locate('idArticulo', cdsDetalleARTICULO.AsInteger,[loCaseInsensitive]);
   if Sender.AsInteger > dm.cdsArticulosCANTIDAD.AsInteger then
   raise Exception.Create('¡No hay Stock suficiente!');
end;

tengo esto en el onValidate... donde capturo la exception?
desde ya agradezco su ayuda... Saludos
P/d: uso delphi 2007 y firebird 2.0
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Limitar el nº de caracteres en un Edit Javier_A OOP 4 04-04-2013 19:57:51
Limitar ingreso a un solo numero arespremium OOP 16 26-09-2007 19:58:36
Limitar Caracteres en un Memo jlalvarez OOP 5 03-07-2007 19:06:44
Limitar caracteres en un edits. Arturo Cabrera C++ Builder 3 11-05-2006 16:41:12
Limitar caracteres en DBEdit omy Varios 5 05-10-2005 03:39:34


La franja horaria es GMT +2. Ahora son las 11:19:52.


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