Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Valor maximo de un campo (https://www.clubdelphi.com/foros/showthread.php?t=84496)

jafera 25-10-2013 16:24:49

Valor maximo de un campo
 
Buenas a todos.

Tengo una pequeña duda a ver si alguien me puede encender una bombilla que me alumbre.

En una tabla Firebird 1.5, tengo 35 campos numericos cuyo valor debe estar comprendido entre 0 y 5 ambos inclusive.

En el MinValue he puesto valor 0 y en el MaxValue 5, con lo que si introduzco un valor distinto a este rango me lanza un aviso de Firebird advirtiendome del error de valores.

Este comportamiento para mi es correcto aunque el mensaje que sale esta en ingles y me gustaria poder verlo en la lengua de Cervantes, es posible?

Tambien me gustaria que al dar Ok al error, se borrara el valor erroneo y mandara el foco al edit en cuestion para volver a teclear el valor.

Otra opcion que se me ocurre es esta:

Código Delphi [-]
 
procedure TF_ModulDades.PuntuacionsPV11Change(Sender: TField);
begin
        If PuntuacionsPV11.Value > 5 then
        begin
                ShowMessage ('El valor tiene que ser igual o menor que 5');
                PuntuacionsPV11.Clear;
                PuntuacionsPV11.FocusControl;
        end;
end;

Es esto correcto o alguien tiene alguna sugerencia?

Tambien podria poner una excepcion?, si es asi como la manejaria?

Gracias a todos y saludos

Josep

defcon1_es 25-10-2013 17:57:19

Hola.
Yo lo que haría es prevenir que puedan teclear en el edit un valor distinto a los permitidos:

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not(Key in ['0'..'5', #8])
  then Key := #0;
end;

Y te puedes olvidar de capturar excepciones y traducirlas...

jafera 25-10-2013 18:20:25

Gracias Defcon1_es.

Efectivamente si no pulso un valor entre 0 y 5 no lo admite y ya esta, pero no me limpia el edit y me manda el foco allá mismo para que lo introduzca de nuevo, supongo que le debo dar valor 0 al campo o limpiarlo y mandar un focuscontrol.

Sigo con los progresos

Saludos

Josep

Casimiro Notevi 25-10-2013 19:02:59

Si quieres que le dé el foco:
Código Delphi [-]
PuntuacionsPV11.SetFocus;

Aunque yo lo haría todo en la BD, tanto el control del valor como la excepción.

ecfisa 25-10-2013 19:08:39

Hola Josep.
Cita:

...pero no me limpia el edit y me manda el foco allá mismo para que lo introduzca de nuevo...
Por ahí estoy entendiendo mal la situación, pero según ese código, si presionas otro carácter que los contemplados no se pierde el foco por que no se sale del Edit. Y tampoco hay que introducir nuevamente, ya que directamente no permite el ingreso de caracteres fuera del rango establecido.

Saludos :)


La franja horaria es GMT +2. Ahora son las 08:23:36.

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