Al mostrar datos en formulario actualizarlos en tabla

Tengo 3 tablas, TblDatospersonales, TblExpedientes y TblVehiculos.

Tengo 1 formulario independiente en el cual voy dando de alta datos personales (dni, nombre, apellidos, etc.), datos del expediente y datos del vehículo. Para lo cual uso la siguiente instrucción:

  Dim db As Database

  Dim rs As Recordset

  Dim rs1 As Recordset

  Dim rs2 As Recordset

Set db = CurrentDb

Set rs = db.OpenRecordset("TblDatosPersonales")

Set rs1 = db.OpenRecordset("TblExpedientes")

Set rs2 = db.OpenRecordset("TblVehiculos")

Rs. AddNew 'Guarda datos en tabla Datos Personales

……

Rs1. AddNew 'Guarda datos en Tabla Expediente

……

Rs2. AddNew 'Guarda datos en Tabla Vehiculos

…….

Los puntos suspensivos es la instrucción que uso, no la inserto para no hacer largo el texto.

Esta primera parte me funciona bien. Ahora viene la segunda parte.

Cuando doy de alta un dni y este ya existe, me muestra en pantalla los datos personales de dicho documento, si hay algún dato que faltaba (TblDatospersonales) cuando se registró en su día, pues los agrego, por ejemplo lugar de nacimiento, ciudad, etc.

Ahora viene el problema, cuando posteriormente visualizo el formulario, no me aparecen los datos actualizados.

Lo tengo planteado de la siguiente manera:

Set db = CurrentDb

Set rs1 = db.OpenRecordset("TblExpedientes")

Set rs2 = db.OpenRecordset("TblVehiculos")

‘Actualiza datos en la tabla Datos personales.

CurrentDb.Execute "UPDATE TblDatospersonales SET Hijode = '" & Replace(Forms!FrmDatosPersonales!Hijode, "'", "''") & "',Direccion = '" & Replace(Forms!FrmDatosPersonales!Direccion, "'", "''") & "', " _

                    & "Localidad = '" & Replace(Forms!FrmDatosPersonales!Localidad, "'", "''") & "',Ciudad = '" & Replace(Forms!FrmDatosPersonales!Ciudad, "'", "''") & "', " _

                    & "Telefono1 = '" & Replace(Forms!FrmDatosPersonales!Telefono1, "'", "''") & "',Telefono = '" & Replace(Forms!FrmDatosPersonales!Telefono, "'", "''") & "' " _

                    & "WHERE Dni = '" & Forms!FrmDatosPersonales!Dni & "'", dbFailOnError

Rs1. AddNew 'Guarda datos en Tabla Atestados

……

Rs2. AddNew 'Guarda datos en Tabla Vehiculos

…..

Etc.

¿Cómo debería de plantearlo? Para que me actualizara los datos en la tabla TblDatospersonales y a su vez insertar los datos en las otras tablas.

2 Respuestas

Respuesta
2

Antonio, perdóname pero creo que te complicas mucho. Verás, si tengo la tabla Amigos como

Observa que Ana no tiene dirección ( vive en la calle). También tengo otra tabla CopiaAmigosA, aunque podrías ser muchas.

Le he cambiado los nombres a los campos para que se vea que los campos origen y destino no tienen porque llamarse igual, pero sí ser de datos compatibles.

Tengo un formulario independiente donde en función del idamigo que seleccione en el combinado Elegir, me muestra los datos en los cuadros de texto. Para el ejemplo selecciono a la amiga Ana.

Ahora, como soy generoso, voy a darle una casa donde vivir en una calle.

Puedes ver que el cursor aún está en el Texto6. Si pulso el botón, me deja la tabla Amigos como

Y la tabla CopiaAmigosA

Y el código no puede ser más sencillo. En el evento Al hacer clic del botón le tengo puesto

Private Sub Comando14_Click()
DoCmd.RunSQL "update amigos set amigo='" & Me.Texto4 & "', direccion='" & Me.Texto6 & "', ciudad='" & Me.Texto8 & "',pais='" & Me.Texto10 & "' where idamigo=" & Me.Elegir & ""
DoCmd. RunSQL "insert into copiaamigosA(idamigo, campoa, campob, campoc, campod)values(elegir, texto4, texto6, texto8, texto10)"
End Sub
Respuesta
1

AddNew Crea un nuevo registro (en blanco), no actualiza uno existente.

Las actualizaciones se efectúan o bien con una SQL:

CurrentDb.Execute "Update TablaXX Set Campo1= '" & [aqui un texto] & "' ,  Campo2 = " & [Aqui un numero & " Where [Aqui la condicion que define al registro o conjunto de registros]"

O editando el recordset:

Rs1.Edit
Rs1!Campo1 = "abc"
Rs1!Campo2 = 123
Rs1.Update

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas