Tengo un problema con un programa de prestamos en Visual Básic
Tengo una pequeña base de datos que intenta registrar los prestamos otorgados al personal de una empresa. Quiero saber como es el procedimiento de código para que cuando yo le indique al formulario que hay un préstamo de 500 en 5 cuotas, me genere automáticamente 5 registros en una tabla con el importe de las cuotas y las fechas de vencimiento de las mismas por ej. 15/03/03, para no tener que registrarlas una por una en la tabla de prestamos. ¿Me explique bien?
1 Respuesta
Respuesta de juancg
1
1
juancg, Lenguajes: ASP HTML/DHTML JavaScript Visual Basic C++ Java (no...
Con un "For" el problema queda resuelto. Supogamos que: nImporte = importe total del prestamo nCuotas = nº de cuotas nPeriodo = nº de días entre cada cuota dFecha= fecha de vencimiento la primera cuota RS = recordset con la tabla de cuotas abierta en el modo adecuado (supongo que es en modo adLockBatchOptimistic) Dim x as Integer For x=0 to nCuotas-1 RS.AddNew RS!fecha=DateAdd(dFecha,nPeriodo*x,"d") RS!cuota=nImporte/nCuotas Next RS. UpdateBatch Como verás, es bastante sencillo. Si no era eso lo que querías, avísame.
1 ¿Esta variable la declarás en el botón de Aceptar del formulario? 2 Los otros datos como nombre o legajo del empleado ¿debo incluirlos en la misma variable? Porque he visto que la veriable cubre el registro del préstamo pero no la identificación del mismo, como por ejemplo el nombre del empleado. No te imaginas la ayuda que me estas dando... de corazón... Gracias Juancg.
Si quieres identificar al empleado, no tienes más que añadir al For, los datos que quieras: RS!nombre=sNombre RS!id=nID ...o lo que quieras Con eso no hay problema. Respecto a la variable de la que hablas, ¿a cuál te refieres?. En principio, todas las variables que menciono pueden estar declaradas dentro del evento Click del botón Aceptar. De todas maneras, yo supongo que alguna te sobrará porque la información que deben contener la estarás sacando de un TextBox, ComboBox, o algún control así, por lo que podrías usar la propiedad Text de ambos. Te propongo esto: Dim x As Integer, RS As New ADODB.Recordset Dim nImporte as Currency, nCuotas as Integer, nPeriodo as Integer Dim dFecha as Date nImporte = CCur(TextBox_Importe.Text) nCuotas = CInt(TextBox_Cuotas.Text) nPeriodo = CInt(TextBox_Dias.Text) dFecha= dtPicker.Value RS.Open "tPrestamos",adLockDynamic,adLockBatchOptimistic,adCmdTable For x=0 to nCuotas-1 RS.AddNew RS!fecha=DateAdd(dFecha,nPeriodo*x,"d") RS!cuota=nImporte/nCuotas Next RS. UpdateBatch ... Espero que te haya quedado claro. Si no es así, no dudes en volver a preguntar ...
Me sorprendió la rapidez de tu respuesta que para un desesperado (como yo es) como agua en el desierto... ¿Cómo sería la programación de los botones Buscar, Modificar y Borrar registros? Todo esto dentro de la tabla prestamos... Y para no molestarte ¿Me recomendarías un manual que me enseñe paso a paso el Lenguaje de VB y su aplicación? Lamento que la frialdad de la red me impida un apretón de manos pero... dalo por hecho... Alejandro Merlo [[email protected]]
Supongo que tienes un DataGrid o algo semejante en el formulario, y un formulario adicional para los detalles de los registros, con el que añades, o algo parecido, ¿no es así?. Si es así, el RecordSet siempre apuntará al registro que esté marcado en el DataGrid, por lo que los botones "Modificar" y "Borrar" son inmediatos, con la salvedad de que, cuando borras o modificas un préstamo, se supone que todas las cuotas relativas a ese préstamo también se deben borrar o actualizar. El problema es ¿cómo sé cuáles cuotas se refieren al mismo préstamo? Podría pensar en buscar las cuotas iguales del mismo empleado, pero puede haber pedido más de un préstamo de similares características. La solución más elegante, es crear una tabla maestra con los datos de cada préstamo, y una tabla detalle con las cuotas de cada uno de ellos. La tabla de cuotas podría contener sólo la fecha, la cuota, un campo boolean "Pagada", y el identificador del préstamo asl que se refiere. De esta manera, si quieres modificar el préstamo global, sólo tienes que editarlo, borrar todas las cuotas asociadas a él, y crearlas de nuevo con el método de antes. Si quieres borrarlo, y has creado una relación con Access entre las dos tablas, al borrar el registro de la tabla maestra, todas las cuotas se borrarán solas. Si no es así, tendrás que borrarlas con una consulta SQL. La ventaja que tiene el hecho de incluir un campo "cuota" en la tabla de detalle, que aparentemente puede sobrar, es que permite que el empleado en un momento determinado haga una amortización anticipada. Si hace una amortización anticipada, que se asocia a una determinada cuota (a la hora de pagar una cuota, paga más de lo estipulado), es muy fácil calcular cuánto le queda por pagar, y modificar las cuotas restantes, sin modificar las que ya han sido pagadas. Al final, creo que vas a estar más liado con la respuesta que sin ella, pero creo que deberías orientar tu programa hacia lo que te he explicado. Si necesitas código para alguna cosa particular, no me cuesta nada ayudarte. Doy mi mano por apretada :-)
Seguramente, más adelante te molestaré con algo pero quiero agradecerte públicamente la extensión y magnitud de tu respuesta... Me diste un empujón hacia el Código que me servirá para intruducirme en la programación un poco más avanzada... Gracias por todo y hasta pronto. Sos el mejor... Alejandro Merlo Córdoba-Argentina [email protected]