Botón que agregue varios registros a un subformulario Access

Tengo un formulario principal (no está basado en ninguna tabla o consulta), con un cuadro de texto (Texto1) y un botón de comando y dentro de él tengo un subformulario con el campo (Texto2), en vista de datos (ya que antes de ejecutar el comando, debo filtrar algunos datos) y basado en una consulta.

Quiero escribir por ejemplo un número en el cuadro de Texto1 y que al presionar el botón se llenen incrementalmente todos los registros del campo Texto2 del subformulario con Texto1 + 1.

1 respuesta

Respuesta
1

Un formulario admite varios formatos para visualizar los datos y en todos ellos el origen puede ser la misma consulta, a la hora de visualizarlos un formulario continuo se asemeja en estética a un formulario en vista hoja de datos.

Para llenar un campo con una serie consecutiva, normalmente se suele hacer mediante un bucle que recorra los registros, en cualquiera de los casos solo es necesaria una variable como dato auxiliar (también puede utilizarse la numeración interna del formulario).

Un ejemplo en el que comenzando en la semilla (el valor de Texto1) numera los registros en orden ascendente al pulsar el botón 'Numerar', no se utiliza variable, utiliza la posición del registro según el orden que tenga aplicado, el primer registro tiene el valor cero (0)

Private Sub Numerar_Click()
With Me.[el-subformulario].Form.RecordsetClone
.MoveFirst
Do Until .EOF
.Edit
!Texto2 = Me.Texto1 + .AbsolutePosition
.Update
.MoveNext
Loop
End With
End Sub

Gracias por la oportuna respuesta.
Al probar el código me arroja el error: Error en el método 'Form' de objeto '_SubForm'

Este es el código acomodado a los datos verdaderos

Private Sub Numerar_Click()
With Me.[el-subfornulario].Form.RecordsetClone
.MoveFirst
Do Until .EOF
.Edit
!Campo en el subformulario = Me.Campo-del-formulario-principal + .AbsolutePosition
.Update
.MoveNext
Loop
End With
End Sub

¿Cuál ha sido la adaptación al entorno real?

En ese entorno (el real) al subformulario se le llama:
El-subformulario

Y al campo del formulario principal (en el que esta el botón que inicia el código) se llama:
Campo-del-formulario-principal

En la exposición inicial el cuadro de texto con la semilla (el numero inicial) dice que se llama TEXTO1 (y se le ha respetado) así mismo el campo que recibe el dato en el subformulario (cuyo nombre no se menciona) se llama TEXTO2 y también fue respetado.

Si la exposición inicial es correcta, lo único que necesitaba cambiarse es el nombre del subformulario (se desconoce, no se le menciona en parte alguna).

--- Desglosando el proceso ---

Con With se crea un alias que referencia al RecordsetClone del formulario (el subformulario es también un formulario) que aplicara por defecto.

Se desplaza al primer registro (de la copia oculta del subformulario)

Inicia un bucle que finalizara al llegar al ultimo registro
Abre el registro para modificarlo
Modifica el valor de un campo asignándole:
(La suma de un cuadro de texto + la posición del registro en el conjunto)
Guarda los cambios
Se desplaza al siguiente registro
Vuelve a inicio del bucle y mientras existan registros repite el ciclo

Al finalizar con los registros (se cumple el EOF) destruye el alias y finaliza.

Sin With:
Forms.[aquí el nombre del formulario principal].[aquí el nombre del subformulario].Form.[copia oculta del origen de datos].MoveFirst

Asignando el alias por defecto:
. MoveFirst

Si quedo algo en el tintero publica la duda

¡Gracias!  Es correcto, pido disculpas porque a principio pensé colocar los datos basados al entorno  real, pero dejé los mismos para no quitarle más tiempo. Muchas gracias por la colaboración y la clara explicación. Buen día.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas