Hola
Tengo un formulario. Dentro hay un subformulario. Cada uno está ligado a su propio recordset, que son tablas existentes.
Pongamos, por ejemplo, que el formulario tiene dos registros (y uno oculto): Nombre y apellidos (y un Id autonumérico)
Pongamos que el subformulario tiene dos registros: uno que hace referencia al Id de la otra tabla y un número de teléfono.
Como una persona puede tener muchos números de teléfono, entonces puede haber muchos registros del subformulario que hacen referencia a la misma Id.
Mi problema es que al crear un nuevo registro en el formulario principal, lo hago mediante SQL porque todo lo demás no me ha funcionado:
Me.Nombre.SetFocus
nom = Me.Nombre.Text
Me.TextBoxApellidos.SetFocus
apell = Me.TextBoxApellidos.Text
Me.Recordset.Update
Me.Recordset.FindFirst "Nombre = '" & nom & "' AND Apellidos = '" & apell & "'"
Lugar = Me.Recordset.Fields("Id").Value
Al crear un registro en la tabla 1 tengo que crear un registro en blanco en la tabla 2 (no he contado que en esta tabla 2 también pongo un campo oculto con la fecha del día en que se abre)
Set dbs = CurrentDb
strSQL = "INSERT INTO [Tabla2] ([Id Persona], [Fecha Inicio], [Teléfono]) VALUES (" _
& Lugar & ", format('" & Date & "','dd/mm/yyyy'), " & [Form_Subf].Cuadro_combinado15.Value & ")"
dbs.Execute strSQL
Posteriormente, cuando consulto la tabla a mano, puedo comprobar que el registro se ha guardado correctamente.
Sin embargo, justo detrás de esto tengo el siguiente código:
[Form_Subf].RecordSource = "SELECT * FROM [Tabla2] WHERE [Id Persona] = " & Lugar
Set rs = [Form_Subformulario Historia Clientes].Recordset
rs.Requery
If Not (rs.EOF) Then rs.MoveLast <--------------------------------Con la ejecución detenida en este punto...
...genero una inspección para ver las propiedades de rs
Y la propiedad recordcount es 0
Qué hago mal? Por qué no puedo hacer referencia al recordset del subformulario?
Muchas gracias. Saludos
No puedo editar. Para acortar, recorté los nombres.
Donde dice
Set rs = [Form_Subformulario Historia Clientes].Recordset
Debe decir, por coherencia
Set rs = [Form_Subf].Recordset
Saludos
el control [Form_Subf] es un control de subformulario, es un control, como es un botón o un cuadro de texto.
El control no tiene Recordset asociado, lo que tiene recordset es el subformulario, al que se accede a través de la propiedad Form del control subformulario.
Prueba con
[Form_Subf].Form.Recordset
de todas maneras, si tienes el subformulario y el formulario principal con los campos principal y secundario definidos, esto lo debería hacer sólo ¿no?, bastaría con que actualizaras el subformulario.
[Form_Subf].Requery
------
Ya sé Excel, pero necesito más.
Muchas gracias, mañana lo pruebo.
Es que como hay tantísimas maneras de referirse a lo mismo... Y en unos casos valen y en otros no... ¡¡CON LO FÁCIL QUE ES EL EXCEL!!!
Pues no soy capaz.
Hago un
Set rs = [Form_Subf].Form.Recordset
Y luego miro rs.recordcount y me sale 0. Debería haber unos 400 registros.
:(
Un saludo
Por cierto, tengo hecha la vinculación de campos principal y secundario (el principal el del formulario y el secundario es el correspondiente del subformulario)
Para consulta me funciona perfectamente.
El problema es que mi formulario + subformulario son para añadir datos.
En este punto, cuando quiero añadir datos desde el subformulario a un registro que ya existe de la tabla del formulario, la cosa también me funciona correctamente.
Pero si creo una persona nueva (en la tabla del formulario), entonces creo por código un registro en la tabla del subformulario. Esto también lo hace bien.
Pero una vez creo esto, quiero posicionarme ahí, y eso es lo que me falla.
Un saludo
Creo que queda resuelto.
La solución es la siguiente:
Me.Nombre.SetFocus
nom = Me.Nombre.Text
Me.TextBoxApellidos.SetFocus
apell = Me.TextBoxApellidos.Text
Me.Recordset.Update <--------------------------Mueve el registro al primero de la tabla