Access 2003. Porcentaje de acuerdo al plazo
Tengo en Access 2003 una base. En la misma indico en un form. La fecha de entrega de la mercadería y la fecha de posible cobro. En general ese cobro debería ser a los 30 días y tiene un recargo por ese plazo. Como debería hacer para que la diferencia de días entre el ingreso del pedido y la fecha de cobro indique un porcentaje de recargo mayor si esa diferencia de días resulte superior a los 30 dias .
1 Respuesta
En el evento "después de actualizar" del cuadro de texto fecha de cobro, le generas este código:
If DateDiff("d",Me.[fecha de entrega],Me.[fecha de cobro])<=30 Then Me.recargo =0.1 Else Me.recargo=0.2 End If
De tal forma que si la diferencia entre los campos "fecha de entrega" y "fecha de cobro" es de 30 días o menos, en el campo "recargo" te pondrá un 10%, y si la diferencia supera os 30 días, en el campo "recargo" pondrá 20%.
Solo te queda adaptar el código a los nombres de campos que tu tengas y a los porcentajes que quieras.
Un saludo.
Gracias por tu pronta respuesta y muy acertada. Pero lo que no te aclaré y te pido disculpas es que la tasa (%) aparece en el formulario y proviene de la tabla de la cual depende el formulario.- Por ejemplo en la tabla hay un registro "tasa de recargo" que aparece en el formulario para mayor claridad al cliente. Cuando quiero modificar esa tasa, debo ir a la tabla y luego al formulario. Lo ideal es que en base a la diferencia de días, como vos lo señalas, cambio el digito en el registro "recargo por plazo de pago" Gracias nuevamente y espero tus comentarios
Oscar
Lo siento, pero no entiendo nada... si el campo está en la tabla de la que depende el formulario, puedes modificarlo directamente desde el formulario...
El código que te propuse funciona solo después de introducir o actualizar una fecha, pero no te actualizará registros anteriores. Si eso es lo que quieres, puedes poner el mismo código en el evento "al activar registro" del formulario.
Y si no, explícame mejor lo que buscas.
Te cuento: la tabla tiene varios campos que luego derivan en el famoso formulario. Uno de esos campos es recargo por tiempo de pago de la factura. El tiempo es la fecha de entrega y factura o pago menos la fecha de hoy que es cuando ingresa la orden de envío.
Hay otro campo que dice porcentaje de recargo (por ej. 3%)
ese 3% en un digito que yo coloco y es fijo. O sea en un porcentaje fijo sin importar el plazo. Ahora bien, como puedo hacer para que tarife de forma distinta y de acuerdo al plazo de pago de la factura
por ejemplo si fecha de entrega menos menos la fecha de hoy supera los 30 días. Obviamente no importa si debo anular el campo de la tabla donde coloco el porcentaje.-
Gracias Oscar
Óscar, me has de perdonar, pero sigo sin ver lo que quieres, porque por lo que explicas, lo que yo entiendo es lo mismo que preguntabas inicialmente y la respuesta sigue siendo el mismo código que ya te facilité. Como ya tienes un campo para el recargo (da igual que sea un valor fijo que tu pones), el código propuesto te lo rellenará (en el formulario y por tanto en la tabla) en función de la diferencia de días.
Ahora hablas de fechas de entrega, fecha de factura, fecha de pago y fecha de hoy, y me pierdo porque no sé qué fechas quieres tener en cuenta para hacer el cálculo, pero solo has de modificar los argumentos de la función datediff() para que te coja las dos fechas que quieras, por ejemplo:
.- Fecha de entrega y fecha actual:
If Datediff("d",Me.FechaEntrega,Date)<=30 Then
.- Fecha actual y fecha prevista de cobro:
If Datediff("d",Date,Me.FechaCobro)<=30 Then
.- fecha de factura y fecha prevista de cobro:
If Datediff("d",Me.FechaFactura,Me.FechaCobro)<=30 Then
Hola. Yo nuevamente con el tema del recargo cuando excede la fecha pactada. Estuve un poco enfermo y ahora retomo el tema. No me funciona y creo que mi culpa es no haberte dado toda la información o proceso de como toma los datos.- Algo fundamental, creo, es que no te comenté que además de la tabla en la cual hay un campo llamado tasa de recargo (ahí es donde coloco el porcentaje) existe una consulta que tiene registros "plazo: [Fecha de facturación] - [Fecha estimada de pago]. Luego hay otro campo que dice Recargo: [plazo]*[tasa de recargo]
Entonces como puedo hacer para que tome una tasa de recargo para distintos plazos <= 30 3%; <=60 6%.
Perdón por darte tantas complicaciones sobre esto, me cuesta pero me gusta aprender.
Gracias Oscar
Tener un campo en al tabla en el que pones un porcentaje "fijo" a mano y luego pretender usarlo para calcular un porcentaje variable en función del plazo no tiene el más mínimo sentido. Yo de tí quitaría el campo porcentaje de tu tabla y lo crearía en la consulta de la siguiente manera:
tasa de recargo: SiInm([Fecha de facturación] - [Fecha estimada de pago]<=30,0.03,SiInm([Fecha de facturación] - [Fecha estimada de pago]<=60,0.06,SiInm([Fecha de facturación] - [Fecha estimada de pago]<=90,0.09,0.15)))
La expresión que te pongo te calculará 4 tasas distintas: 3% si el plazo es <=30, 6% si es <=60, 9% si es <=90 y 15% en otro caso
Perdón dos dudas y me parece que ya está
-Eliminar el campo de la tabla " Porcentaje de recargo" también lo quita del formulario que aparece en él como cuadro de texto?
-En la consulta al poner <= a 30 no abarca también <= a 60. Porque menor de 60 puede ser también menor a 30
Un abrazo
Oscar
1º/ Si lo eliminas de la tabla, lógicamente te lo elimina del formulario, si ese formulario está hecho sobre la tabla. Pero como el campo lo tienes en la consulta, solo has de cambiar el origen del formulario de la tabla a la consulta (o hacerlo de nuevo sobre la consulta)
2º/ No, las condiciones se evalúan por orden: primero mira si es menor de 30, si lo es, pone el porcentaje, si no lo es, pasa a la siguiente condición, que sería menor de 60, pero ya mayor de 30, y así sucesivamente.
Hola. No va a ser tan fácil. En tu expresión que la indicaría en la consulta
SiInm([Fecha de facturación] - [Fecha estimada de pago]<=30,0.03,SiInm([Fecha de facturación] - [Fecha estimada de pago]<=60,0.06,SiInm([Fecha de facturación] - [Fecha estimada de pago]<=90,0.09,0.15)))
Debo hacerla multiplicar por el importe. donde ubicaría el *[importe] ?
Nuevamente gracias
Si no te funciona poniendo el nombre del nuevo campo "tasa de recargo" (o como lo hayas llamado), sí, has de repetir la misma expresión para multiplicarla por el importe
Otra vez yo. Te cuento que por no transmitir realmente lo que indicaba la situación planteada por los clientes te hice pensar y trabajar por demás. Decime si no te molesto y dejamos las cosas así con mi agradecimiento de siempre. Resulta que me hacen ver que no es lo mismo atrasarse 2 días que 29. Es decir debería funcionar como un interés "importe por porcentaje de recargo por días de demora dividido 365 días. Para hacerla mas simple te consulto:
¿Se puede hacer una tabla con días correlativos del 1 al 90 y que los días tengan un porcentaje (3/365) y mediante una consulta o el formulario aplique el recargo de acuerdo a los días? Pienso que también me resultaría mas simple cambiar el porcentaje directamente en la tabla cuando fuera necesario.-
Decime si es mucho lio y lo dejamos así
Muchas Gracias
Sí, claro que puedes hacer esa tabla de días, con el porcentaje en ella o en una consulta sobre ella (y no tienes que calcular las fracciones).
Luego en tu otra consulta, con tal de añadir la nueva tabla/consulta y relacionarlas adecuadamente (por los campos días), ya lo tienes. Si no te deja relacionarlas porque uno de los campos es calculado, usa la función DBúsq para buscar el porcentaje correspondiente.
Aunque claro, también lo puedes hacer directamente en la consulta en que calculas el porcentaje (tienes los días, solo has de multiplicarlos a lo que ya tienes y dividirlo por 365)
- Compartir respuesta