** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Desglose de Monedas
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoDesglose de Monedas

 Responder Responder Página  <12
Autor
Mensaje
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 873
Enlace directo a este mensaje Enviado: 14/Noviembre/2017 a las 20:15
Ok
Voy a probar algún punto de interupcción y Debug print para ver que valores va tomando.
Mañana la posteo
Saludos y gracias por las molestias.

Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 873
Enlace directo a este mensaje Enviado: 14/Noviembre/2017 a las 20:58
Gracias por todo, joven
Ahi va mi ejemplo
https://drive.google.com/open?id=1iGn2WwaB85w_5k2yu8FOBm6H_V9371H6

Saludos
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 9670
Enlace directo a este mensaje Enviado: 14/Noviembre/2017 a las 22:06
Tabla: Monedas1     -la he creado yo-

Consulta: Desglose Monedas1  esla tuya copiada, solo cambiando el nombre de la tabla



Hala, a ver si encuentras la diferencia .... porque yo no  ....  LOL



Por cierto, me ha gustado lo de joven .... Cool





Editado por Mihura - 14/Noviembre/2017 a las 22:09
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 873
Enlace directo a este mensaje Enviado: 14/Noviembre/2017 a las 23:02
Bueno, pues que le vamos a hacer yo tampoco encuentro ninguna diferencia.
Salvo la propiedad de indexado.Que tambien la habia cambiado pero tampoco iba.
Y  tu sí le has puesto indexado sin duplicados y parece que funciona.

Pero por cierto, si te fijas en el desglose no lo hace bien
Al menos a mi, me suma 799,99 y no 999,99 como deberia.
Y a ti?



Editado por main - 14/Noviembre/2017 a las 23:13
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 9670
Enlace directo a este mensaje Enviado: 14/Noviembre/2017 a las 23:44
A mi me suma bien...
1-500
2-200
1-50
2-20
1-5
2-2
1-0.50
2-0.20
1-0.05
2-0.02


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
-Marta- Ver desplegable
Moderadora
Moderadora
Avatar

Unido: 08/Septiembre/2005
Localización: Venus
Estado: Sin conexión
Puntos: 2941
Enlace directo a este mensaje Enviado: 15/Noviembre/2017 a las 03:27
hola

me ha picado la curiosidad y me he bajado la BD del Torito y la consulta DesgloseMonedas no va, en cambio DesgloseMonedas1 da el resultado correcto

aparentemente las dos tablas son iguales pero me da a mi que la BD se creo con una version distinta a 2k7/2k10, al abrir la tabla Monedas1 se permite agregar nuevos campos directamente sin entrar en diseño mientas que con la otra no

otra cosa que me mosquea es que si compactas y reparas, la consulta DesgloseMonedas1 deja de funcionar Wacko



OT una cosa Torito, se que soy muy pejiguera con el codigo y no me gusta salir de una funcion a lo "bestia"

' Autor : JESUS MANSILLA CASTELLS -Mihura-
'---------------------------------------------------------------------------------------------
Public Function RT_DesgloseMoneda(nDato, ImporteInicial As Currency) As Long
'variable que no se pierde entre las distintas llamadas
Static ImpRestante As Currency
    
     If Not (IsNull(nDato)) Then 'si nDato es nulo: variable al valor inicial y salida
        RT_DesgloseMoneda = Int(ImpRestante / nDato)
        ImpRestante = ImpRestante - (nDato * RT_DesgloseMoneda)
        Else
          ImpRestante = ImporteInicial
     End If
End Function 

creo que asi queda  muuuuuucho mejor LenguaAbrazoLengua




Editado por -Marta- - 15/Noviembre/2017 a las 03:35
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: España
Estado: Sin conexión
Puntos: 9670
Enlace directo a este mensaje Enviado: 15/Noviembre/2017 a las 09:43
Pues la cosa tiene su miga ....

La cuestión es que Access lee los datos de la tabla en orden FIFO sin importarle la cláusula de orden que le pongas.

Como yo creé la tabla dando valores de 500 hasta 0,01 me funciona bien, al compactar la ordena por dónde le sale (la pone de menor a mayor) y la rutina ya no funciona, al entrar como primer valor el 0,01 en vez del 500.

He probado a usar una subconsulta ordenada y ocurre lo mismo lee los registros, y después ordena:
SELECT 0 AS Valor, RT_DesgloseMoneda(Null,999.99) AS Unidades
FROM Monedas1
WHERE 1 = 0
UNION ALL SELECT Valor, RT_DesgloseMoneda (Valor, 0) AS Unidades FROM
(SELECT Valor FROM Monedas1 ORDER BY Valor DESC);

Lo que consigo que furule (aunque compactes) es creando una tabla con Id como campo de clave (autonumérico) como esta:

Monedas
Id Valor
1 500,00 €
2 200,00 €
3 100,00 €
4 50,00 €
5 20,00 €
6 10,00 €
7 5,00 €
8 2,00 €
9 1,00 €
10 0,50 €
11 0,20 €
12 0,10 €
13 0,05 €
14 0,02 €
15 0,01 €


PD. Bruji: Ya sabes que te consiento todo, todito, todo .... Big smile. Así que no me importa que me corrijas mi 'estilo' de código.
Otra cosa distinta es que te haga caso LOL.





Editado por Mihura - 15/Noviembre/2017 a las 09:44
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
main Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Agosto/2009
Localización: OVIEDO
Estado: Sin conexión
Puntos: 873
Enlace directo a este mensaje Enviado: 15/Noviembre/2017 a las 09:57
Bueno muchach@s, que con el Campo Id se resolvio todo satisfactoriamente
Muchísimas "GRACIAS"
Pero si compactas...... Tururú
Saludos para todos
Se puede cerrar el hilo
Y el Cajón de Monedas tambien

EDITO: Por que no puse la solución. Y es esta:
La tabla Monedas:
ID            Autonumerico (No hace falta que sea campo Clave)
Valor        Moneda     Indexado(No)
Hay que introducir el Valor descendente (Desde 500 hasta 0.01)
Y todo funciona aunque compactes
Aunque supongo que si no usas el ID e introduces en el campo Valor(sin indexar) los valores de forma descendente deberia funcionar igualmente
Saludos de nuevo



Editado por main - 15/Noviembre/2017 a las 10:41
Arriba
-Marta- Ver desplegable
Moderadora
Moderadora
Avatar

Unido: 08/Septiembre/2005
Localización: Venus
Estado: Sin conexión
Puntos: 2941
Enlace directo a este mensaje Enviado: 15/Noviembre/2017 a las 20:10
Publicado originalmente por Mihura Mihura escribió:

PD. Bruji: Ya sabes que te consiento todo, todito, todo .... Big smile. Así que no me importa que me corrijas mi 'estilo' de código.
Otra cosa distinta es que te haga caso LOL.

no esperaba menos de mi torito Tongue
Arriba
 Responder Responder Página  <12
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable