Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como quitar Mask a un dbEdit. (https://www.clubdelphi.com/foros/showthread.php?t=75257)

EgyEgy 09-08-2011 06:44:05

Como quitar Mask a un dbEdit.
 
Hola, nuevamente con dudas con el Delphi 7.

Uso un dbEdit que me despliega la información de un campo númerico con 2 decimales.

Todo funciona bien cuando edito datos que he recuperado de una tabla, pero al validad la nueva información y asignar el dbedit1.text y convertir la informacion a un campo integer (StrToInt(dbEdit1.Text)), me envía un error de "7,534 is not a valid integer value".

Esta claro que el error es por que no es un valo totalmente numerico, ya que tiene puntos y comas. La pregunta seria ¿como quito esas comas y puntos para que quede solo el campo númerico.

newtron 09-08-2011 08:41:13

Hola.

Según estás comentando lo único que deberías de quitar son las comas correspondientes a los miles porque tu número es un entero y no lleva puntos decimales pero en caso de ser un número decimal no deberías de quitarselos porque cambiarías el número.

Hay una incongruencia en tu post porque primero hablas de que el número lo tienes en un campo con 2 decimales pero sin embargo quieres asignarlo como si fuera un entero.

Para eliminar las comas de los miles puedes usar la función StringReplace, puedes echar un vistazo a este post:

http://www.clubdelphi.com/foros/showthread.php?t=43905

Saludos

EgyEgy 09-08-2011 14:48:58

Tienes razon
 
NO tiene decimales, es solo un entero, en miles.

Por lo tanto me arroja una coma (,) que es la que genera el error cuando uso la funcion STRTOINT, pero ya viene asi cuando de forma automatica se edita en el campo dbedit.

Yo espera una propiedad o metodo que eliminara de forma automatica esa coma (,) cuando se lee el registro.

Voy a probar tu sugerencia y te informo.

Gracias

maeyanes 09-08-2011 15:26:14

Hola...

Si estás usando componentes TDBEdit, no es recomendable obtener el valor desde su propiedad Text, por que esta mayormente tiene el formato de visualización aplicado.

Lo más conveniente es que uses directamente el valor del campo:

Código Delphi [-]
VariableDeTipoInteger := DBEdit1.DataSet.FieldByName('CampoInteger').AsInteger;


Saludos...

EgyEgy 09-08-2011 18:27:39

Oki Maeyanes
 
Muy bien, tambien probaré lo que tu me sugieres.

Aprovechando el mismo tema. Cuando tengo un campo TdbEdit, y agregue un nuevo registro, es decir ejecute el ADD, ¿en que momento lo que yo escribo en el dbedit se pasa el valor al campo correspondiente de la tabla?.

Dicho de otra forma, si desde el momento que yo salgo del campo tdbedit en cuestion y una lineas de código mas adelante yo quisiera recuperar el valor del campo de la tabla directamente ¿se podria?

ecfisa 09-08-2011 19:07:20

Hola EgyEgy.

Cita:

si desde el momento que yo salgo del campo tdbedit en cuestion y una lineas de código mas adelante yo quisiera recuperar el valor del campo de la tabla directamente ¿se podria?
Mientras estas ingresando los datos y antes de realizar el post, siempre podés recuperar los valores cancelando la acción sobre el DataSet asociado:
Código Delphi [-]
procedure TForm.btnCancelarClick(Sender: TObject);
begin
  DataSet.Cancel;
end;
Pero no sé si a eso te estás refiriendo...

Saludos.

maeyanes 09-08-2011 19:12:36

Hola...

Los componentes de edición para bases de datos pasan el valor editado al campo en el momento que pierden el foco. Así que lo que preguntas si es posible.


Saludos...


La franja horaria es GMT +2. Ahora son las 07:42:57.

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