Redondear y luego convertir en letras en access

Tengo un formulario en el cual se muestran los totales de un Subformulario llamado "Subformulario Gastos", luego este resultado lo sumo con otro total llamado "Cargos Adicionales"; el problema esta en que cuando se hace la suma de los dos campos en la casilla números me aparece bien, pero en la casilla de letras me aparece un centavo menos. Ej. $27.22 y el letras "Veintisiete 21/100 dólares".
Yo pienso que el el problema esta en que en la base de datos de MySQL estoy manejando las cantidades con 3 decimales, es por eso que quiero que antes de pasarlo a letras me lo aproxime, para ver si así aparece bien.
1

1 respuesta

Respuesta
1
¿Qué código usas para escribir en el campo Letra el dato numérico?
Bueno amigo yo estoy utilizando una función que encontré en internet, tengo dos códigos, y ya he probado con ambos, pero los dos me dan el mismo problema.
¿Te lo envío aquí?
Digo, porque es un poco extenso...
Me avisas Ok.
[email protected]
Una aperta.
He recibido el código y efectivamente es lo que supones, lo que si es cierto es que el campo letra para mí redondea correctamente, ya que si incorporas el dato 27,216 redondea a 22 y si el dato es 27,214 redondea a 21.
Por lo que supongo que el error está en que en el caso de dato igual a 27,214 tu dato numérico redondea al alza (27,22) y el dato letra redondea a la baja.
Ya me dirás lo que te interesa y miramos para adaptarlo.
Una aperta.
Bien mi amigo, ma alegra saber que ya entendiste mi problema.
Ahora quisiera ver si me puedes ayudar a que la cantidad en letras, se adapte a lo que se presenta en números. La situación es que en la BD de MySQL se están utilizando 3 decimales, por lo que es muy común que aparezcan cantidades similares a: 1.125, 2.715, etc.
Cuando los decimales superan en el tercer decimal el cinco; osea que llegan a 6 no hay problema:
Ejemplo: cuando el 3º decimal es cinco: 2.715 = 2.71  en letras DOS 71/100 ; pero cuando es superior a cinco: 2.716 = 2.72  en letras DOS 72/100
Esto solo sucede con las cantidades en letras, porque en números la aproximación se da bien. (Tal vez se podría modificar el código de la función que convierte a letras)
Gracias.-
Prueba a sustituir en el módulo que me enviaste en la Function letra(Numero)
Texto = Round(Numero, 2)
por el código
Texto = Int([Numero]) + Left(([Numero] - Int([Numero])), 4)
De esta manera creo que tendrás el dato que quieres.
Prueba y me comentas.
Una aperta.
Muchas gracias por tu ayuda amigo.
Con el código que me diste se solucionó mi problema, solo que le cambie el último numero a 5, porque hice unas pruebas y con el 4 quedaba igual, incluso al ponerle 3 ya no mostraba los decimales (solo mostraba números enteros, pero sin aproximar); al final el código me quedo así:
Texto = Int([Numero]) + Left(([Numero] - Int([Numero])), 5)
Descubrí también que que mi gran problema era por estar usando 3 decimales y el código esta hecho para 2 decimales por ello no da bien algunas palabras; pero le agregue un cero al código: If Decimales = "00" Then
Asi SI FUNCIONA BIEN: If Decimales = "000" Then
1,000.00 gracias amigo
Mil gracias mi amigo
Ha sido de mucha ayuda, he leído muchos foros desde seis meses atrás en busca de información y hasta ahora logré solucionarlo con tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas