¿Cómo actualizar datos de una tabla a partir de otra tabla con vba access?

Tengo dos tablas. Una llamada "Alumnado" y la otra "Config_alumnado". Ambas tienen un campo común llamado [NIE] que es como el DNI del alumnado y otro campo llamado [unidad] que es donde se graba el curso y letra en el que está cada alumno (ejem: "3º A") .

Lo que necesito son dos cosas:

1º. Ir recorriendo cada uno de los registros de la tabla "Alumnado" y actualizar en cada registro el campo [unidad] de la tabla Alumnado, cuyo valor se tiene que tomar del campo [unidad] de la tabla "Config_alumnado".

2º Puede ocurrir que haya un NIE (un alumno) en la tabla "Alumnado" que no exista en la tabla "Config_alumnado". En ese caso ese registro de la tabla "Alumnado" se debe borrar.

1 respuesta

Respuesta
1

Una forma de hacerlo:

En un formulario añades un botón de comando y le pones este código:

Private Sub..._Click()
Dim rst As DAO.Recordset
'Borras los datos de los alumnos que sobran
CurrentDb.Execute "DELETE * FROM Alumnado WHERE NIE NOT IN (SELECT NIE FROM Config_alumnado)"
'Actualizas la unidad
set rst=CurrentDb.OpenRecordset("Alumnado")
rst.MoveFirst
Do Until rst.EOF
rst.Edit
rst("unidad")= DLookUp("unidad","Config_alumnado","NIE='" & rst("NIE") & "'")
rst.Update
rst.MoveNext
Loop
rst.Close
set rst=Nothing
End Sub

Prueba primero en una copia de tu BD, por si hay algún error, no pierdas datos.

Saludos!


La primera parte del código, perfecta. Me elimina los registros que no existen. Pero en la segunda parte me da un problema en la siguiente línea:

rst("unidad")= DLookUp("unidad","Config_alumnado","NIE='" & rst("NIE") & "'")

Dice que no coinciden los tipos de datos en la expresión de criterios. Por si sirve de ayuda, el campo NIE es entero largo y el campo unidad un campo de texto.

Gracias.

Pensé que NIE era de tipo texto. Prueba así:

rst("unidad")= DLookUp("unidad","Config_alumnado","NIE=" & rst("NIE") )

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas