Agregar o pasar datos de un form y subform a otra 2 tablas

Agregar o pasar datos de un form y subform a otra 2 tablas

A la comunidad de todoexpertos

Concurro a sus conocimientos

Necesito esta ayuda porque estoy trabajando en una escuela.

¿Como debo hacer hacer para que los datos dentro de un Formulario y Subformulario (que tipie en esos momentos) pueda pasarlos, a otras 2 Tablas que ya tengo creada con los mismos campos, para almacenarlos. Estaría bueno que esos datos se almacenaran al pulsar un botón y luego de almacenarse se eliminaran “solo” los datos que estaban escrito en el formulario y Subformulario.

Formulario:ALUMNO(DNI, Nombre, Teléfono, Calle, FNacimiento)

Suformulario: MATRICULA(DNI, Codigo_asig, Fecha, Nota)

Pasar solo los datos formulario y Subformulario a las Tablas ALUMNO_REPR Y MATRICULA_REPR

ALUMNO_REPR (DNI, Nombre, Teléfono, Calle, FNacimiento)

MATRICULA_REPR(DNI, Codigo_asig, Fecha, Nota)

Se que ustedes pueden ayudarme.

2 Respuestas

Respuesta
1

La forma sencilla sería que hicieses el formulario y subformulario basados directamente en esas tablas, y les pongas la propiedad "entrada de datos" a Si.

Pero como supongo que tendrás algún motivo para no hacerlo así, puedes poner un botón en tu formulario, y le asocias este código:

Private Sub....
Dim miSQL As String
miSQL="INSERT INTO ALUMNO_REPR(DNI,Nombre,[Telefóno],Calle,FNacimiento) VALUES('" & Me.DNI & "','" &  Me.Nombre & "','" & Me.[Telefóno] & "','" & Me.Calle & "',#" & Format(Me.FNacimiento,"mm/dd/yyyy") & "#)"
CurrentDb.Execute miSQL
miSQL="INSERT INTO MATRICULA_REPR(DNI,Codigo_asig,Fecha,Nota) VALUES('" & Me.DNI & "'," & Me.Codigo_asig & ",#" & Format(Me.Fecha,"mm/dd/yyyy") &#," & Me.Nota & ")"
CurrentDb.Execute miSQL
End Sub

Un saludo


Un nuevo foro de Access ha nacido, visítanos: http://nksvaccessolutions.com/Foro/ 

Anda! Se me olvidó la segunda parte de tu pregunta.

Añadele esto antes del End Sub:

Me.DNI=""
Me.Nombre=""
Me.[Telefóno]=""
Me.Calle=""
Me.FNacimiento=Empty
Me.NombreSubform.Form.DNI=""
Me.NombreSubform.Form.Codigo_asig=""
Me.NombreSubform.Form.Fecha=Empty
Me.NombreSubform.Form.Nota=""

Y en el código de antes hay un error en la segunda SQL, que tendría que ser así, porque los datos están en un subformulario:

miSQL="INSERT INTO MATRICULA_REPR(DNI,Codigo_asig,Fecha,Nota) VALUES('" & Me.NombreSubform.Form.DNI & "'," & Me.NombreSubform.Form.Codigo_asig & ",#" & Format(Me.NombreSubform.Form.Fecha,"mm/dd/yyyy") &#," & Me.NombreSubform.Form.Nota & ")"

G racias expertos!

Sveinbjorn El Rojo

Que tal, agradezco que me ayudes!

Me da error de compilación

no se encontró el método o el dato miembro.

Según lo dicho por icue Gonzalez

Gracias!

Se presupone que el formulario y subformulario no están basados en ninguna tabla

si los formularios y subformularios tienen tablas!!

Formulario:ALUMNO(DNI, Nombre, Telefono, Calle, FNacimiento)  tienen tabla

Suformulario: MATRICULA(DNI, Codigo_asig, Fecha, Nota)       tienen tabla

Pasar solo los datos formulario y Subformulario ALUMNO, MATRICULA a las Tablas ALUMNO_REPR Y MATRICULA_REPR necesito que pase solo ese registro a las tablas 

Y elimine el registro una vez pasada.

ALUMNO_REPR (DNI, Nombre, Telefono, Calle, FNacimiento)    tienen tabla

MATRICULA_REPR(DNI, Codigo_asig, Fecha, Nota)            tienen tabla

Le agrege id

Le saque los paréntesis a Telefono y acento.

en la instrucción sql aparecen cuadradillo“almohadilla"esta bien!
ya los corregí

paso la tabla

Se podrá hacer que pase solo los datos que en ese momento están el el formulario y subformulario a las otras tablas y con los id?

Con respecto a lo que nombraste al principio¿Como seria? Sveinbjorn El Rojo 

La forma sencilla sería que hicieses el formulario y subformulario basados directamente en esas tablas, y les pongas la propiedad "entrada de datos" a Si.

se donde esta esa propiedad, pero que haría?

Agradecería la explicación

Gracias!

En los códigos que te pasé tienes que sustituir donde pone "nombreSubForm" por el nombre de tu subformulario, que en tu caso será: "subformulario_MATRICULA"

Pero si no te quieres complicar con los nombres, puedes usar esta otra forma:

Dim miSQL as String
DoCms.RunCommamd acCmdSaveRecord
miSQL="INSERT INTO ALUMNO_REPR SELECT DNI,Nombre,Telefono,Calle,FNacimiento FROM ALUMNO WHERE Id=" & Me.Id
CurrentDb.Execute miSQL
miSQL="INSERT INTO MATRICULA_REPR SELECT DNI,Codigo_asig,FEcha,Nota FROM MATRICULA WHERE Id=" & Me.Id
CurrentDb.Execute miSQL
'Esta linea borra los registros de la tabla ALUMNO
DoCmd. RunCommand acCmdDeleteRecord

Que tal Sveinbjorn El Rojo

la linea me da error:

se requiere objeto

DoCms.RunCommamd acCmdSaveRecord

Se la quite y funciona bien.Es si es vital para el código?

¿Guarda el registro no?

------------------------------------------------------------------------------------------------------------------------------------------

¿Podrías contestarme esta pregunta por favor?

al principio de tu respuesta decías

La forma sencilla sería que hicieses el formulario y subformulario basados directamente en esas tablas, y les pongas la propiedad "entrada de datos" a Si.

Se donde esta esa propiedad, pero que haría?

Agradecería la explicación o alguna dirección web que me explicara que incidencia tiene en el form / sbform?

G racias!

La linea de guardar el registro, la puse por si las moscas, si te va bien sin ella, quítala sin miedo.

Si sacas las propiedades del formulario, en la pestaña datos, verás esa propiedad. Si te colocas sobre ella y pulsas F1, te llevará a la ayuda de access con una explicación detallada, pero en resumen, si la pones en Sí, sólo te permite agregar registros, no consultar los existentes. Si la pones en No, te permite tanto agregar como consultar.

Pero en tu caso no es una solución, porque tus formularios trabajan sobre otras tablas.

Respuesta
1

Se presupone que el formulario y subformulario no están basados en ninguna tabla, ya que de lo contrario, si después de hacer lo que muy acertadamente te ha indicado Sveinbjorn, eliminas ese registro, lo estás eliminando de las tablas origen del formulario y subformulario. Pero, si realmente quieres eliminar el registro pon debajo del código que te han indicado en la otra respuesta

Docmd. Runcommand accmddeleterecord

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas