Cargar varios registros correlativos con un evento en MS Access

Necesito por favor me ayuden a crear un evento de botón que al ejecutar cargue en una tabla varios registros con numeración correlativa y el campo fecha avance un mes en cada uno.

La base de datos es para cargar pagos mensuales de alquileres, entonces, los pagos serían por ej:

Contrato 001122 (Tabla Contrato)

3 meses de $ 5.000- con vencimiento desde el 10/08/2018

3 meses de $ 6.000- con vencimiento desde el 10/11/2018

El resultado deseado con un solo click del botón es: (Tabla Cuotas)

001122 / cuota 1 / $ 5.000 / vto 10/08/2018

001122 / cuota 2 / $ 5.000 / vto 10/09/2018

001122 / cuota 3 / $ 5.000 / vto 10/10/2018

001122 / cuota 4 / $ 6.000 / vto 10/11/2018

001122 / cuota 5 / $ 6.000 / vto 10/12/2018

001122 / cuota 6 / $ 6.000 / vto 10/01/2019

El contrato se guarda en una tabla con más columnas y las cuotas se guardarían en otra tabla relacionada que seguramente también tendrá algún otro campo, pero serían datos irrelevantes para la acción.

Supongo que la carga se debe realizar en cada cambio en el precio y actualizar la fecha de vto... Lo cual no sería un problema...

1 respuesta

Respuesta
2

Así, a bote pronto, sin saber como tienes construidas las tablas, ni donde aparece el importe del contrato y por tanto, de donde salen lo de 5000 y 6000 ni otras cosas y suponiendo que los campos donde quieres insertar los valores sean Contrato, NumCuota, Importe y FechaVto, si tengo una tabla

y tengo un formulario

En cuanto pulso el botón

El código del botón es

¡Gracias! Muy agradecido por tu pronta respuesta!! En estos días lo pruebo y confirmo si me funciona!! 

Gracias nuevamente por tu respuesta Icue, pero veo que formulé mal la consulta, o mejor dicho a medias, omití pasar los datos de la tabla Contratos y tabla Períodos, serían así: 

Tabla Contratos:

Num Contrato/Inmueble/Dueño

Tabla Períodos:

Num Contrato/Cantidad de cuotas/Valor de cuotas/Vencimiento primer cuota

Lo ideal es cargar en un formulario esos datos y se Anexen a la tabla Cuota, que es tal cual la creaste.

Ejemplo: Primer carga (ejecución del botón)

1234/3/$5.000/10-08-2018

Segunda carga (ejecución del botón)

1234/3/$6.000/10-11-2018

o sea, el resultado buscado es el mismo pero con esos datos variables en las tablas Contratos y Períodos. Quizás esas dos tablas deberían ser una sola, por qué la realidad es que nunca serán más de tres períodos distintos...

Aguardo comentarios y desde ya muchas gracias!! Saludos.

Sigo sin saber de donde sale el valor que va a dar lugar a las cuotas, por ejemplo, si vendo algo por Importe=10.000 y concedo 10 cuotas, en principio podría poner que cada cuota fuera de 1000 o poner un recargo en función de un criterio pero como te decía no sé donde está ese importe, ni que criterio sigues para modificar las cuotas, ni que significa "segunda carga", etc.

Si tengo una tabla Contratos

Y una tabla Cuotas

Con ellas hago un formulario con subformulario 

Si pulso el botón

Como no sabía el criterio para modificar la cuota ni de que valor parte le he puesto que le sume 1000 cada mes

El código del botón es

Te resumo sin ejemplos, en general los contratos de alquiler son por 24 o 36 meses, los primeros 12 tienen un precio, los segundos 12 otro y los terceros 12 otro, ese precio se calcula manual, no se es un cálculo exacto siempre, también a veces en vez de periodos de 12 meses ese cambio de precio se produce cada 6 meses, por eso mi lógica me decía que las tablas deberían ser 3, contratos, periodos y cuotas.

Lo que necesito lograr es, con una sola acción o evento, y una vez generado el registro del contrato, generar los registros correspondientes a las cuotas, no importa si tengo que repetir esa acción o evento por cada cambio de precio.

Sigo dudando si realmente es necesario 3 tablas o si con 2 se logra lo mismo.

Gracias.

Vamos a ver, si no sé cual va a ser el valor de las cuotas, ni el porcentaje o lo que sea del incremento, lo más sencillo sería poner en el evento Después de actualizar del combinado Periodo

docmd.setwarnings false

dim i as byte

for i=1 to periodo

DoCmd. RunSQL "insert into cuotas(numcontrato, cuota, valorcuota, fechavto)values(Me.NumContrato," & i & ", Importe, dateadd(""m"", 1, fechacontrato))"
Next i

cuotas.form,requery

Es decir, que te ponga en la tabla cuotas, y por tanto en el subformulario, tantos registros "separados" un mes como le hayas dicho en periodo, y ya luego le pones el valor de la cuota.

Pero, si por ejemplo, la cuota va a subir, 1000 cada 6 ó 12 meses, ya que no lo dices.

Si elijo 12

Por problemas de espacio no me cabe la imagen, pero la tabla quedaría

El código sería

Bien, voy una vez más y será la última, no quiero volverme pesado, el código funciona pero necesitaría que los valores IMPORTE y PERÍODO sean variables y de modificación manual, o sea, coloco los valores y luego ejecuto...

Entonces por ej completo Importe 5000 periodo 6, ejecuto, se deberían generar de la cuota 1 a la 6, luego cambio Importe 6000, ejecuto, se deberían generar de la cuota 7 a la 12...

Coloque 6 meses y 5000 para continuar con los mismos valores que el ejemplo anterior, pero lo necesario es que ambos valores puedan modificarse previo a la ejecución del código y el resultado los utilice....

Muchas gracias!!

Si tengo el formulario

y pulso el botón

Ahora le cambio el importe y las cuotas, le pongo 600 y 3 

y pulso EL MISMO botón

El código del botón es

¡Gracias! Excelente!! Mil gracias!! Y disculpas por las idas y vueltas!! Abrazos desde Argentina!!

Hola Icue, estoy intentando replicar lo ejecutado por vos y me tira este error:

Copio las tablas para ver si el error está ahí:

Probé también borrando el campo id_CUOTA pero sale el mismo cartel, agradezco la atención, saludos.

Veo que no has mirado el código que te puse. Si observas la linea inmediatamente anterior a la que se pone en rojo verás que termino la línea con

values" _

Esa rayita es muy importante y a un espacio de las comillas pues es la que le indica al código que es un salto de línea.

Para indicar el final de una línea se pone " _

O sea comillas espacio raya

Y para indicar el principio de la siguiente se pone & "

o sea & espacio comillas

Excelente! Ese error ya lo corregí y encontré uno más igual... ahora no puedo saber por qué tira error esta línea:

Los campos en las tablas son lo que deben ser, fecha, moneda y numero...

Si numcontrato es numérico debe ser

numcontrato=" & me.numcontrato & "")

Si fuera texto, por ejemplo, 00135 entonces si sería

numcontrato='" & me.numcontrato & "'")

Y si numcontrato fuera fecha sería

numcontrato=#" & me.numcontrato & "#")

Mil gracias, solucionado ese problema, ahora me tira este cartel:

desde ya gracias nuevamente!

En vista diseño del formulario Contratos ¿has mirado si el subformulario se llama realmente Cuotas? Haz clic en él y pulsa Propiedades-Otras-Nombre

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas