![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Gracias por contestar, pero mi problema no es el de separacion si es por punto o por coma (eso creo yo, ya que si pongo un numero correcto con comas no se queja i graba perfectamente). Mi problema es validar si es un double o no. Ya que si en el DBedit pongo:
salta un error que es: 42,2,5 is not a valid floating point value for field 'preu' Entonce como he dixo antes para validarlo iba a utilizar (que no se si esta bien eso, ya que tampoco funciona):
Y lo havia puesto en el beforePost, pero al cambiar me salta ese error. Espero que me hayan entendido y que me haya explicado bien. Gracias de nuevo. Tram. Última edición por tramjauer fecha: 03-10-2005 a las 16:04:33. |
|
#2
|
|||
|
|||
|
Porque no lo implementas en el evento OnChange del field? incluso puedes usar StrToFloatDef..
|
|
#3
|
|||
|
|||
|
buenas de nuevo, lo he provado en el onExit del componente i en el onChage de del campo de la tabla i quando pongo el numero que anterior mente e puesto, ej: 41,,4 o el numero 41,33,4,
me sigue saliendo el mismo error, ya que se dispara antes el error que el evento. Gracias! Última edición por tramjauer fecha: 03-10-2005 a las 17:08:13. |
|
#4
|
|||
|
|||
|
tal vez te pueda servir el "Onvalidate" de los campos?
(boton derecho sobre el componente de la tabla o query, y luego click en fieldsEditor, le pones en agregar todos, los que no agregues no podras trabajar con ellos) y luego seleccionas el campo y en el object inspector en eventos seleccionas el OnValidate te genera algo asi como: procedure TForm1.Table1enteroValidate(Sender: TField); begin If Sender.NewValue < Sender.OldValue Then Raise ERangeError.CreateFmt( '%d debe ser mayor a %d',[Integer(Sender.NewValue), Integer(Sender.OldValue)]); end; si mal no recuerdo puedes generar un "sysutils.Abort" para que se cancele el posteo de la informacion |
|
#5
|
|||
|
|||
|
Lo siento pero con el onValidate tambien lo he probado y nada tambien salta ese error. No puede ser que nadie haya echo la validacion de algun precio que se introduzca o alguna cosa simiilar.
Tram. |
|
#6
|
|||
|
|||
|
Me parece q el error no lo tienes en Delphi sino en Access. Abre tu BD con Access y verifica este campo. O mejor deja de usar Acces y usa el Firebird Embedded por ejemplo..
|
|
#7
|
||||
|
||||
|
El problema es que se trata de un EDatabaseError, y es controlado por el propio DBedit. Los EdatabaseError no tienen codigo de error, por tanto, se hace más dificil capturarlo.
Como dije antes, con esto: Si se captura parcialmente el error. El problema en sí, es que un DBEdit hereda de TCustomMaskEdit que trabaja con texto, al intentar convertir el texto a float, es cuando lanza ese error: Constante de texto usada:SInvalidFloatValue (Unidad DBConst, linea 28) que se lanza desde: TFloatField.SetAsString (Unidad DB, linea 4905) La forma más facil de capturar el error es en evento OnSetText del propio campo de la base de datos. (Doble clic a tu tabla, clic al campo en cuestion, inspector de objetos--> eventos -->setText)
Puedes construir una rutina genérica y asignarla a todos los campos de tipo Float que tengas. Un saludo |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|