Ir al contenido


Foto

Cálculo tipo currency en un dbedit (no hay forma ¡¡¡¡buuuuaaaaa!!!!!)


  • Por favor identifícate para responder
26 respuestas en este tema

#21 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 23 abril 2011 - 03:00

Jejejeje, mira lo que te comenté el otro día, y es que cosas parecidas nos han ocurrido a todos :

Aunque la verdad es que tampoco sé a que se refiere el error con lo del formato con una cadena vacía. ¿ Porqué no borras el campo persistente y lo vuelves a crear ?, no sea que te haya quedado alguna propiedad defectuosa.


NOTA: Por cierto, al menos en Delphi la propiedad ReadOnly no se activa automáticamente al activar la propiedad Currency.

Felicitats per haver trovat el problema. 
  • 0

#22 Marcmiralles

Marcmiralles

    Advanced Member

  • Miembros
  • PipPipPip
  • 108 mensajes
  • LocationEspaña

Escrito 23 abril 2011 - 05:04

Como indico más arriba en la propiedad ReadOnly del campo está todo el intringulis. Ahora bien: ¿porqué muestra un error cómo si se le pasase una cadena vacía? imagino que por que al ser readOnly := True no deja establecer el valor.

Gracias a todos por vuesta ayuda.

Marc Miralles
  • 0

#23 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 23 abril 2011 - 10:59

Hola,
Disculpenme si resulto grosero pero eso no me parece algo esperado o normal, sea Delphi o Lázarus... el que se altere la propiedad ReadOnly automáticamente a true con asignar true a Currency pinta más un BUG que alguna característica y diseño de los componentes en Lázarus.

Saludos,


  • 0

#24 Marcmiralles

Marcmiralles

    Advanced Member

  • Miembros
  • PipPipPip
  • 108 mensajes
  • LocationEspaña

Escrito 24 abril 2011 - 02:38

Hola Marc.

¿ En que linea salta el error ?

1) importe := StrToFloat(DBEdit3.Text) + StrToFloat(DBEdit4.Text);
2) QPruebas.FieldByName('importe3').AsFloat:= importe;

Imagino que saltará en la primera línea, ya que parece inexplicable que pueda saltar en la segunda.



Jajaja, yo lo sabes, si en nuestro mundo suceden cosas inexplicables: es en la programación. el fallo lo daba en la segunda, al asignar el valor al campo ya que este estaba en Readonly, lo que pasa es que el mensaje era confuso. Supongo que los desarrolladores de esa rutina no pensaron que otro programador intentase  hacer la barbaridad de asignar valor a un campo readonly, jajaja.

NOTA: Por cierto, una forma radical pero efectiva de solventar el problema de conversión, es  implementar tu propia función de conversión de cadenas a decimales. De  forma que ya no dependes de librerías externas con potenciales bugs como  el que te has encontrado.

Salutacions.


Pues sí, tienes razón, ¿supongo que será meter las funciones en un modulo, poner a este en el use y llamar a la función, no?

Salut

Marc Miralles
  • 0

#25 Marcmiralles

Marcmiralles

    Advanced Member

  • Miembros
  • PipPipPip
  • 108 mensajes
  • LocationEspaña

Escrito 24 abril 2011 - 02:45

Hola,
Disculpenme si resulto grosero pero eso no me parece algo esperado o normal, sea Delphi o Lázarus... el que se altere la propiedad ReadOnly automáticamente a true con asignar true a Currency pinta más un BUG que alguna característica y diseño de los componentes en Lázarus.

Saludos,


Pues mira tu que gracia, acabo de llegar y me encuentro con un bug, jajajaja :cool: :shocked:
  • 0

#26 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 24 abril 2011 - 08:55


NOTA: Por cierto, una forma radical pero efectiva de solventar el problema de conversión, es  implementar tu propia función de conversión de cadenas a decimales. De  forma que ya no dependes de librerías externas con potenciales bugs como  el que te has encontrado.


Pues sí, tienes razón, ¿supongo que será meter las funciones en un modulo, poner a este en el use y llamar a la función, no?


Más bien es una confusión mía, pensaba que tenías el mismo problema que en este hilo relacionado :

http://www.delphiacc...loat/?topicseen


Hola,
Disculpenme  si resulto grosero pero eso no me parece algo esperado o normal, sea  Delphi o Lázarus... el que se altere la propiedad ReadOnly  automáticamente a true con asignar true a Currency pinta más un BUG que  alguna característica y diseño de los componentes en Lázarus.

Saludos,


Pues mira tu que gracia, acabo de llegar y me encuentro con un bug, jajajaja 


No creo :), pero es muy fácil de comprobar.

Lo normal es que lo hayas cambiado sin querer (a mi me ha ocurrido muchas veces), vas rápido y cambias una propiedad sin fijarte mucho, o bien tienes el foco en las propiedades y te pones a escribir pensando que estás en el editor, ... ... ...

Salutacions.
  • 0

#27 Jose_Augusto

Jose_Augusto

    Member

  • Miembros
  • PipPip
  • 35 mensajes

Escrito 28 abril 2011 - 06:57

Hola a Todos,

buscando respuesta a un problemas de formatos con campos encontré este foro y este hilo y me llamó la atención el problema que se tiene con el tipo de dato currency. hasta hace poco yo también los tenia, sobre todo al hacer operaciones con datos currency o estos fueran escritos en forma correcta en los edit's o DbEdit's.

no tengo idea en que versión de delphi trabajen, desde hace unos años he empezado a trabajar con las librerias Jedi (Joint Endeavor of Delphi Innovators) y son unas librerias Open source (http://www.delphi-jedi.org/) .

estas librerias tienen una fuente muy amplia de componentes que les ahorra muchas horas de codigo y muchos dolores de cabeza, como por ejemplo el TJvValidateEdit que dentro de las propiedades tiene el formato Currency, que desde la captura le da el formato currency al contenido, Agregando el $ o E (Euro), el .00, y por codigo permite hacer operaciones directas sobre el contenido sin tener que hacer las engorrosas conversiones  ejemplo  edit1.Ascurrency = edit2.AsCurrency * EditCantidad.AsFloat;

espero que esta información les sea de ayuda y no sea demasiado tarde para aquellos que todavia siguen buscando soluciones a este tipo de males.


  • 0




IP.Board spam blocked by CleanTalk.