Crear recordset para insertar campos en tabla access

Quería preguntartes si me pudierais ayudar a realizar un recordset ya que llevo varios días intentándolo y no soy capaz y me estoy volviendo loco.

Tengo un formulario continuo basado en una consulta con los siguientes campos (Socio, Nombre, Tipo, Concepto, Descuento, Importe, Mensualidad) y me da ciertos socios que cumplen las condiciones, pues bien quiero crear un botón que recorra todos los registros y me los guarde en una tabla llamada TPagoCuota pero no soy capaz.

Private Sub cmdInsertar_Click()
Dim miSql As String
Dim rs As Recordset
Dim db As Database
Set db = CurrentDb

Set rs = db.OpenRecordset
MiSql = ("insert into TPagoCuota (Socio, Nombre, Tipo, Concepto, Descuento, Importe, Mensualidad)values(Socio, Nombre, Tipo, Concepto, Descuento, Importe, Mensualidad)")
Do While Not rs.EOF
DoCmd. Run miSql
Rs. MoveNext
Loop

Me da varios errores y no se como ponerlo ya la verdad.

Espero que alguien me pueda ayudar un saludo y gracias por anticipado.

1 Respuesta

Respuesta
1

Tienes un primer error ya que no has definido el recordset.

La minea Set rs = db.OpenRecordset está incompleta ya que no le has pasado ningún parámetro. Mira en la ayuda de Access el método Database.Openrecordset y verás que al menos el primer parámetro es obligatorio (el resto tomará valores por defecto si no escribes nada). Al no definir el recordset es imposible que tenga registros y pueda ir con el MoveNext al siguiente.

Si los registros como dices los presentas en un formulario continuo y el botón está en ese mismo formulario (en el pie o en la cabecera o...) lo más sencillo es decirle al recordset que su origen de datos es el mismo del formulario.

Basta con que hagas la siguiente asignación:

Set rs = Me.RecordsetClone

Aquí cargas el recordset haciéndolo copia de los registros que tengas en el formulario y ya puedes iniciar el bucle por ellos.

La SQL de inserción también tiene incorrecciones (¿qué estás insertando?) Hazla usando el asistente de consultas en la vista de diseño y luego mira el SQL generado desde el menú de diseño de la consulta en la opción Ver Vista SQL. Usa variables, una para cada valor a insertar, y en cada 'pasada' del bucle dales el valor a las variables con el campo correspondiente del recordset (por ejemplo defines la variable miNombre as string al principio, y en cada 'pasada' por el bucle le asignas el valor que le toque (miNombre = rs! Nombre), para finalmente usar la variable en la SQL de inserción en la zona de values que le corresponde.

No olvides cerrar las instancias del recordset y del database al finalizar:

Rs. Close

Set db=Nothing

Cordiales saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas