Problema con tabla de cuotas
Tengo una tabla1con los campos
- PRÉSTAMO
- DNI
- CLIENTE
- MONTO
- PLAZO
- TASA
- MONTO REEMBOLSABLE
- CUOTA
- ESTADO
- FECHA
No puedo lograr que en el formulario tabla1 en un botón llamado Generar, al poner la cantidad de cuotas ( ejemplo 10), me cree los 10 registros ( en la tabla1 obvio) con las cuotas del 1 al 10 y el campo FECHA me sume de la fecha que le ingreso + 30 días ( no importa si hay feriados o meses de 31) trasponiendo también los demás valores
Vi varios códigos, intente reformarlos, pero no logro, estoy más perdido que niño en playa lleno de gente.
Muchas gracias quien me pudea ayudar como hacerlo con algún código.
2 Respuestas
Guillermo lástima que hayan personas ofensivas, usted en ningún momento está solicitando se le haga una aplicación, afortunadamente no cae en manos de inexpertos. Es lógico se pide ayuda porque desconoce un tema, pero quien le ha respondido y lo remite a un hilo donde también respondí y el usuario no prestó importancia a mi respuesta, toda vez, que mi opción al menos hace el ajuste en la última cuota. Resumiendo le he preparado este ejemplo. Consta de 3 tablas y 2 formularios.
Observe el ajuste en la última cuota.
RELACIONES
CÓDIGO DEL BOTÓN GENERAR PLAN
Private Sub btnPlan_Click() On Error GoTo hay_error Dim dni As Long Dim vranual As Long Dim ncuotas As Byte Dim cuotames As Long Dim x As Integer Dim strAux As String Dim intresto As Integer Dim lnIdprestamo As Long Dim fecha_inicio As Date 'Vadimaos campos If Not IsDate(Me.fechaprestamo) Then MsgBox "Verifique la fecha", vbCritical, "Plan" Me.fechaprestamo.SetFocus Exit Sub End If If IsNull(Me.cboDNI) Then MsgBox "Falta el DNI", vbCritical, "Plan" Me.cboDNI.SetFocus Exit Sub End If If IsNull(Me.monto) Or Me.monto = 0 Then MsgBox "Falta el monto", vbCritical, "Plan" Me.monto.SetFocus Exit Sub End If If IsNull(Me.vrcuota) Or Me.vrcuota = 0 Then MsgBox "Falta el valor de la cuota", vbCritical, "Plan" Me.vrcuota.SetFocus Exit Sub End If If IsNull(Me.plazo) Or Me.plazo = 0 Then MsgBox "Falta el plazo en meses", vbCritical, "Plan" Me.plazo.SetFocus Exit Sub End If If IsNull(Me.tasa) Or Me.tasa = 0 Then MsgBox "Falta el valor de la tasa", vbCritical, "Plan" Me.tasa.SetFocus Exit Sub End If If IsNull(Me.opcAjuste) Then MsgBox "Debe marcar si hay ajuste en la última cuota", vbInformation, "Plan" Me.opcAjuste.SetFocus Exit Sub End If lnIdprestamo = Me.idprestamo dni = Me.cboDNI vranual = Me.monto ncuotas = Me.plazo 'Meses cuotames = Me.vrcuota intresto = vranual Mod ncuotas fecha_inicio = Me.fechaprestamo + 31 'Validamos el monto con el número de cuotas If ncuotas * cuotames < vranual And Me.opcAjuste = 1 Then MsgBox "Debe marcar el ajuste para la última cuota", vbInformation, "Plan" Me.opcAjuste.SetFocus Exit Sub End If If ncuotas * cuotames > vranual Then MsgBox "El número de cuotas es superior al monto", vbInformation, "Plan" Me.vrcuota.SetFocus Exit Sub End If DoCmd.RunCommand acCmdSaveRecord For x = 1 To ncuotas 'Ajuste para la última cuota If x = ncuotas And intresto > 0 And Me.opcAjuste = 2 Then cuotames = vranual - (ncuotas - 1) * cuotames End If strAux = "INSERT INTO tblPlanCuotas(idprestamo,nro_cuota,vrcuota,fecha)" & vbCrLf strAux = strAux & " VALUES(" & lnIdprestamo & "," & x & "," & cuotames & "," & "#" & Format(DateAdd("m", x - 1, fecha_inicio), "mm/dd/yyyy") & "#" & ")" CurrentDb.Execute strAux Next x hay_error_exit: hay_error: MsgBox "Ocurrió el error " & Err.Number & vbCrLf & Err.Description, vbCritical, "Error..." Resume hay_error_exit End Sub
CÓDIGO DEL BOTÓN AGREGAR
Private Sub btnAgregar_Click() DoCmd. GoToRecord,, acNewRec Me. Fechaprestamo. SetFocus End Sub
He tratado de preparado lo básico para registrar facturas y préstamos, no obstante. hay muchísimo por hacer, le recomiendo dividir en varias tablas la aplicación. Si quiere el ejemplo lo puede solicitar a [email protected].
- Compartir respuesta
Publica el código que has reformado y localizamos los problemas (la solución será un premio a tu esfuerzo y no una copia sin futuro)
¡Gracias! , como veras no vengo bien guiado a lo que nesecito realmente como comente
Private Sub Comando21_Click()
'Declaramos las variables
Dim PRESTAMO As Integer
Dim i As Integer
Dim vFECHA As Variant
'Cogemos los valores del formulario
PRESTAMO = Nz(Me.PLAZO.Value, 0)
vFECHA = Nz(Me.FECHA.Value, 0)
'Si no se ha indicado el número de recibos avisamos
If PRESTAMO = 0 Then
MsgBox "No ha indicado el número de PRESTAMO", vbInformation, "AVISO"
Exit Sub
End If
'Si no se ha indicado la fecha avisamos
If vFECHA = 0 Then
MsgBox "No ha indicado ninguna fecha de vencimiento", vbInformation, "AVISO"
Exit Sub
End If
'Empezamos el proceso de rellenado
For i = 1 To PRESTAMO
'Seleccionamos el registro actual
DoCmd.RunCommand acCmdSelectRecord
'Copiamos el registro actual
DoCmd.RunCommand acCmdCopy
'Nos vamos a un nuevo registro
DoCmd.RunCommand acCmdRecordsGoToNew
'Volvemos a seleccionar el nuevo registro
DoCmd.RunCommand acCmdSelectRecord
'Pegamos los valores en los campos
DoCmd.RunCommand acCmdPaste
'Modificamos el número de recibo
With Me
'Sumamos un número al recibo
PRESTAMO = i + 1
'Lo escribimos
.PRESTAMO.Value = PRESTAMO
'Añadimos treinta días a la fecha
vFECHA = FECHA + 30
'Lo escribimos
.FECHA.Value = vFECHA
End With
'Nos movemos al siguiente recibo
Next i
End Sub
No estas enfocando la solución de forma correcta comenzando por las variables.
Si los datos están disponibles en el formulario (en sus respectivos cuadros de texto) harán la misma función que las variables sin consumir: recursos + tiempo + complicando el código (además son los valores reales, no una copia).
Sobre los plazos ... como no me parece que tengas un enfoque correcto, asume que es como una venta o una factura, formalmente se divide en dos partes, en una los datos comunes (factura, fecha, cliente, dirección etc.).
En una segunda tabla se generan los detalles de la Venta/Factura (los artículos y en los prestamos: los plazos) estos registros se asocian a la factura por un elemento común que en el caso de las ventas seria el numero de venta/factura y en el de lo créditos el numero de crédito (o un ID que identifique como elemento único a esa venta/factura/crédito).
¿Tienes una tabla para introducir los detalles de los créditos? (Solo hace falta una para todos los créditos).
Una vez que en el actual formulario estén los datos indispensables, se procesan y se generan en la tabla detalles los diferentes plazos en los que debería figurar el ID (la relación con el crédito) el numero de plazo, la fecha de vencimiento, el importe y todos aquellos que sean necesarios y no estén en el formulario que define el crédito.
Respecto a los importes y fechas ...
El/los importes: pueden calcularse dividiendo el monto final por el numero de plazos, hay quien (para evitar decimales o asumir un valor consensuado) en el plazo inicial o final compensan la diferencia entre la suma de los plazos y el monto total del crédito (a gusto del consumidor).
Las fechas: estas se pueden calcular para incrementos de treinta días naturales o para que se ajusten a una fecha fija (el treinta de cada mes o el diez o ...).
Analiza lo expuesto, pregunta las dudas y si te convence y estas dispuesto a crear tú aplicación, solo se necesita definir las reglas (como calcular los importes, como genera las fechas ...) y continuamos.
Hay un hilo similar enlace, probablemente ese usuario puede colaborar con sus ideas (su aplicación parece mas avanzada que la tuya) y cualquier lector puede aportar detalles si a ti te parece correcto.
Mi colaboración básica ira en la línea de traducir las ideas aportadas al entorno Access, no la de crear una aplicación bajo demanda (no me parece que este sea el foro adecua para ello).
Inapreciable Eduardo, evite comentarios de esta índole:
Guillermo lástima que hayan personas ofensivas, usted en ningún momento está solicitando se le haga una aplicación, afortunadamente no cae en manos de inexpertos. ...
Simplemente puntualizo los limites que me auto-impongo, la aplicación es la del usuario.
Y si el desea adelantar pasos:
Hay muchos repositorios Web que ofrecen aplicaciones abiertas de todo tipo que puede utilizar como referencia o tomar ideas para crear la suya o en ultima instancia utilizar con libertad.
Ud. Interviene como si fuera moderador de la Web 'el rincón del vago', imponiendo su criterio o pensamiento único (una relación de rey tuerto/súbditos, felicito a sus seguidores incondicionales).
Es imposible que desde sus limitados conocimientos pueda aportar creatividad y créame: todos podemos aprender algo (excepto Ud. que al parecer nació sin capacidad para ello).
En fin, no se puede hacer nada con Ud, (solo sentir lastima).
- Compartir respuesta
Lástima sienten los usuarios por usted no sea arrogante y prepárese más. Si quiere la dicto un cursito avanzado de VBA, Gracias a mis respuestas en este foro tengo muchos alumnos, porque mis respuestas son concretas y con ilustraciones (lo que usted no sabe manejar). Y si fuera moderador lo hubiera bloqueado hace rato. - Eduardo Pérez Fernández
Enrique Feijóo UD es no solo un maleducado, sino también un NULO ayudante de quienes queremos comenzar con algo. Era para mi trabajo y si lo sabia no lo preguntaba, pensé que en un foro la gente ayuda, pero UD no, sus respuestas son inaceptables de maleducadas y de tono altanero. Gracias por su NO tiempo, por suerte alguien con Ganas de que los demás podamos salir adelante me ayudo. - Guillermo Couceiro
Apreciado Guillermo, puede leer mis mensajes para después interpretarlos como le plazca, esta Ud en su pleno derecho (otra cosa es que entienda el contenido), pero no tiene importancia, pues este foro tiene un traductor que copia ideas ajenas y sin entenderlas las replica (en privado cuando tienen autoría), entiendo que Ud. por apremio busque soluciones copy&paste. - Enrique Feijóo
Eduardo: hay cosas que no entiendo, tanto alabar a PostgreSQL como si lo dominase y en el subforo que hay en esta misma Web solo aparece de rebote (mucho no debe de saber o le corrieron cuando lo intento), tampoco tiene muchos seguidores de sus cuatro videos (se deberá a eso lo de hacer publicidad en foros). ................Un comentario sobre PostgreSQL: es un almacén de datos como otro cualquiera de los que Access soporta, los expertos dicen que da un buen rendimiento cuando el conjunto de datos es mediano o grande, pero de pésimo rendimiento para pequeñas aplicaciones, algo que no le quita otras virtudes (como las tiene cualquier otra de su nicho de mercado). - Enrique Feijóo
Eduardo (2): No he visto que programe 'para' PostgreSQL (si lo hiciese tendría activada la 'compatibilidad con SQL' y eso se nota) por lo que trata los datos con tablas vinculadas (esto es: emulando a las originales de Access) y lo dejo aquí que no es mi pretensión avergonzarle más...................Lo curioso es que Access es una base de datos con treinta años de vida y que en principio se diseñó para aplicaciones pequeñas o medianas por lo que PostgreSQL nunca será la mejor de las opciones. - Enrique Feijóo
Enrique, defectivamente usted no sabe Access avanzado y menos PostgreSQL. su comentario "No he visto que programe 'para' PostgreSQL". No necesito demostrárselo a nadie, pero basta con el aporte que hago en el video, y seguro que usted ni siquiera sabe descargar e instalar el material del video, sencillamente su ineptitud no se lo permite. Ahora, habla de que los expertos dicen, no hable por otros, me gustaría conocer el link de esos expertos que comentan sobre el rendimiento y que afirme que es pésimo en rendimiento para pequeñas aplicaciones, que absurdo, si es bueno para grandes volúmenes de datos, como no lo va ser para pequeños. El ejemplo del video no utiliza tablas vinculadas. - Eduardo Pérez Fernández
Por otra parte, siempre he aclarado para aplicaciones en Access cliente servidor es mejor como backend PostgreSQL, por seguridad, capacidad y compatibilidad, Le ofrezco un curso gratis sobre PostgreSQL, de esta forma puede hacer las comparaciones con Access e integración con el mismo. ¿Puede usted hacer una aplicación 100% en Access que funcione en la nube? Si la tiene cuánto vale?. - Eduardo Pérez Fernández
ya me está gustando access - Adriel Ortiz Mangia
Supongo que es por utilizar el hilo para responder a temas que no son del hilo (en ese caso es merecido) eso pasa por andar con críos:: acaban salpicándote al hacer 'pipi' (miccionar) - Enrique Feijóo