Ir al contenido



Foto

Problema con MSAccess y Delphi 2009


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

#1 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 24 febrero 2009 - 09:47

Hola compañeros del foro,  tengo el siguiente problema: Una tabla  en Access llamada Tarifas con 3 campos Valor : Currency, Descuento : Double, y Neto : Currency.

Cuando tení­a esta aplicación en Delphi 7 hací­a lo siguiente sin problema:



delphi
  1. qrTarifasNeto.AsCurrency  := qrTarifasValor.AsCurrency  * qrTarifasDescuento.AsFloat



Asignaba por ejemplo : Valor := 25000 , Descuento := 0,265 y obtení­a  Neto := 6625 que es lo correcto.

En delphi 2009 intento hacer lo mismo  con los mismos valores y obtengo el valor para TarifasNeto  6625000.

El problema parece estar en el formato, pero no se cómo resolverlo.

Muchas gracias por su ayuda.

Saludos

  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.989 mensajes
  • LocationMéxico

Escrito 24 febrero 2009 - 10:20

Asignaba por ejemplo : Valor := 25000 , Descuento := 0,265 y obtení­a  Neto := 6625 que es lo correcto.

En delphi 2009 intento hacer lo mismo  con los mismos valores y obtengo el valor para TarifasNeto  6625000.

El problema parece estar en el formato, pero no se cómo resolverlo.


Verifica la configuración regional, está tomando la coma como miles y no como punto decimal.

Salud OS
  • 0

#3 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 24 febrero 2009 - 10:29

Gracias por contestar,  ya verifiqué y está bién, igual cuando ensayo con datos previamente guardados y que antes funcionaban bien, ahora no funcionan.
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.260 mensajes
  • LocationArgentina

Escrito 24 febrero 2009 - 10:48

Si no es el tema de la configuración regional, pues puede ser que tal vez tengas alguna metida de dedo por allí­... ¿Te fijaste si en la propiedad DisplayFormat no hay algo raro por allí­, como ser 3 ceros de más ;)?

O Quizá por algún lado antes de mostrar el dato lo estás multiplicando por 1000.

Lo último que me pondrí­a a pensar es que debe a un error de tipo o cálculo entre doubles y reales.

No manejo 2009 por lo que no te sabrí­a decir.


  • 0

#5 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 24 febrero 2009 - 11:30

Gracias Delphius por contestar, tengo todo completamente revisado y está bien, finalmente hice una tabla en Firebird con la misma estructura la conecté con los componentes de Interbase , realicé las mismas pruebas y  con esta Db todo funciona perfectamente, en conclusión el inconveniente no está en Delphi si nó en la versión  de dbGo que viene con Delphi 2009.  Buscando encontré algo que comprueba mis sospechas.

You will probably have TAdoDataset with a new version of
ADOTypeToFieldType that converts
that ADO datatype adDecimal  to  ftFMTBcd
You may want to look at TBetterAdoDataset http://betterado.hit.bg/
This component is a TadoDataset descendant that has the data conversion you need
commented out in its code.


  • 0

#6 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 24 febrero 2009 - 11:36

Aunque el lInk de la cita del post anterior nos lleva a algo muy viejo, la idea es que el detalle está en los tipos de datos de la nueva versión de dbGo.
Saludos
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.408 mensajes
  • LocationRepública Dominicana

Escrito 24 febrero 2009 - 12:01

Aunque el lInk de la cita del post anterior nos lleva a algo muy viejo, la idea es que el detalle está en los tipos de datos de la nueva versión de dbGo.
Saludos


Muchas gracias por esa información amigo Wilson, lo tendré en cuenta cuando migre a la versión D2009.

Saludos.
  • 0