Crear n registros nuevos a partir de un numero variable

Tengo una base de datos en la que necesito que me tome los valores de una tabla y a partir de una de las columnas cree tantos registros como indique esta columna, buscando acá encontré este código:

Function abc()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("prueba")
Do While Not rs.EOF
For i = 1 To rs!cuotas
DoCmd.RunSQL "insert into CarteraAdmin (Ncontrato, fechapago) values ('" & rs!contrato & "', " & DateAdd("m", i, #2/21/2016#) & ")"
Next
rs.MoveNext
Loop
End Function

Pero no me devuelve la fecha agreagada que debería sino un valor en horas y es decreciente.

Aclaro que el código que encontré no fue exactamente este sino que lo adapté a mis necesidades. No soy experto pero me gusta aprender.

La tabla de origen es Prueba

La taba de destino es CarteraAdmin

1 respuesta

Respuesta
1

La verdad es que no veo donde está el número que indica las veces que tiene que repetir un registro, por lo que voy a hacer suposiciones. Supongamos que tienes un formulario Prueba basado en la tabla Prueba, y en él hay algún cuadro de texto que indique el número de registros que hay que crear en la tabla CarteraAdmin, y vamos a suponer que este cuadro se llama repetir. Crea un botón de comando y en sus propiedades-Eventos-Al hacer clic, crea un procedimiento de evento y entre Private Sub y End Sub escribe

docmd.setwarning false

dim i as integer

for i=1 to repetir

Domd. Runsql"insert into CarteraAdmin(Nombre, direccion, yoquesé)values(forms!prueba!nombre, forms!prueba!direccion,...)"

next i

Donde Nombre, dirección, etc son los campos de la tabla CarteraAdmin donde quieres que se inserten los valores

Forms! Prueba|nombre son los cuadro de texto o controles del formulario donde están los datos que quieres insertar.

Con respecto a lo del campo donde te pone las horas, en vista diseño de la tabla nira el formato de ese campo.

Hola Icue,

Primero que todo muchas gracias por tu respuesta, pero me da error el código luego de hacer lo que me dijiste. Este es el código que me quedó:

Private Sub Comando10_Click()
DoCmd.SetWarnings False
Dim i As Integer

For i = 1 To NCuotas

DoCmd.RunSQL "insert into CarteraAdmin(NContrato, Valor a pagar, FechaPago, NCuotas) values (Forms!DatosCarteraAdmin!NContrato, Forms!DatosCarteraAdmin!ValorAPagar, Forms!DatosCarteraAdmin!FechaPrimPago, Forms!DatosCarteraAdmin!NCuotas))"

Next i
End Sub

Pero me genera este error:

Agradezco mucho tu ayuda de antemano.

Si la instrucción la escribiste tal como la has puesto, verás que tiene un paréntesis de cierre de más. Quítale el último )

Perfecto Icue,

Ahora tengo otro problema, quiero que al agregar los registros aumente un mes a partir del valor de la fecha del primer pago digitada, para lo cual incluí la función dateadd, pero me preenta el mismo error con la fecha que te puse en la pregunta inicial, ya revise el formato del campo y esta en fecha corta. Te muestro el código que tengo:

Private Sub Comando10_Click()
DoCmd.SetWarnings False
Dim i As Integer

For i = 1 To NCuotas

DoCmd.RunSQL "insert into CarteraAdmin(NContrato, Valorxpagar, FechaPago, NCuotas) values (Forms!DatosCarteraAdmin!NContrato, Forms!DatosCarteraAdmin!ValorAPagar, " & DateAdd("m", i, Forms!DatosCarteraAdmin!FechaPrimPago) & ", Forms!DatosCarteraAdmin!NCuotas)"
Next i
End Sub

Y los registros que me genera, con los valores del formulario que aparecen ahí también:

Nuevamente muchas gracias de antemano!

Repito, si lo que has puesto es exactamente así, tienes un piccolo error, en

" & DateAdd("m", i, Forms!DatosCarteraAdmin!FechaPrimPago) & "

Te faltan los apostrofes al principio y al final, o sea antes y después de las comillas

'" & DateAdd("m", i, Forms!DatosCarteraAdmin!FechaPrimPago) & "'

Animo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas