Agregar registros en un subformulario

He creado una base para gestión de una biblioteca. Tengo dos tablas REVISTAS (título_edit_lugarpubl_issn_cdu_notas) y REGISTROS que contiene los campos anteriores pero añadiendo (nºrevista_mes_año)
He creado un formulario para agregar registros desde él. Con un cuadro combinado donde al elegir el titulo se rellenan automáticamente los cuadros de texto correspondientes a la tabla REVISTAS. Quiero añadir otros cuadros de texto con los campos (nºrevista_mes_año) para insertar texto y que a través de un botón se agreguen los nuevos registros. También necesito que esos nuevos registros agregados se registren en la tabla REGISTROS y se vean en subformulario.
No acabo de dar con ello. Agradecería mucho una ayuda ya que estoy un poco pez

1 respuesta

Respuesta
1
Lo que quieres podrías hacerlo con un formulario sobre la tabla de REGISTROS que siempre presente un registro nuevo. Ten en cuenta que si te presentara los datos anteriores, lo que harías al escribir sería modificarlos.
Para ello podrías crear el formulario y en la propiedad origen del registro poner "select * from REGISTROS where 1=2". AL ser una condición que nunca puede cumplirse, al abrir el formulario te posicionaría en un registro nuevo.
El inconveniente: que nada más empezar a escribir los datos ya estaría grabándose en la tabla y no sería como tu quieres: que se grabe al pulsar un botón.
La otra forma, y más correcta, sería hacer un formulario que no esté asociado a la tabla 'REGISTROS' y en el botón de grabar se construiría una instrucción SQL para que insertase los datos. El código sería algo así:
dim txt as string
txt = ""insert into REGISTROS (título,edit,lugarpubl,issn,cdu,notas,[nºrevista],mes,año) "
txt = txt & "values ('" & me.título & "','" & me.edit & "','" & me.lugarpubl & "',"
txt = txt & "'" & me.issn & "','" & me.cdu & "','" & me.notas & "','" & me.[nºrevista] & "'"
txt = txt & ",'" & me.mes & "','" & me.año & "'")"
Docmd. Runsql txt
Si no te sale, mandame una copia de la base de datos comprimida (con poquitos registros) a mi correo [email protected] y te echo un vistazo.
Muchísimas gracias, me has aclarado mucho. Lo voy a probar y ya te contaré
Ten en cuenta que las líneas "txt = ..." lo que hacen es construir una instrucción de inserción. Cuando se ejecute la instrucción el programa te preguntará si quieres confirmar que se inserten los datos.
Otra forma de insertar el registro (se me ocurre ahora) sería la siguiente:
sub botonInsertar_Click()
    dim rs as recordset
    set rs=currentdb().openrecordset("REGISTROS") ' Abrimos la tabla
    rs.addnew ' Añadir registro
    rs!título = me.titulo
    rs!edit = me.edit
    rs!lugarpubl = me.lugarpubl
    rs!issn = me.issn
    rs!cdu = me.cdu
    rs!notas = me.notas
    rs![nºrevista] = me.[nºrevista]
    rs!mes = me.mes
    rs!año = me.año
    rs.update ' Actualiza los datos
    rs.close ' Cierra la tabla
End Sub
Ten en cuenta que donde pongo "me.xxxxxxx", xxxxxxx es el nombre del campo en tu formulario.
De esta forma no te pedirá que confirmes la inserción del registro.
Por cierto, el código lo he escrito en el bloc de notas. Lo digo porque podría tener algún error de tecleo (

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas