Access - Copiar subforms

 
Vista:

Copiar subforms

Publicado por Alex (4 intervenciones) el 04/11/2004 17:21:50
Hola,

Tengo un control de ficha con un subformulario por ficha, me gustaria que en vez de crear subformularios para cada ficha se crearan automaticamente con los datos de la anterior ficha, ya que, los datos de los subforms van a ser muy parecidos y es mejor realizar pequeños cambios que rellenar todos los subforms cada vez que se canvie de ficha.

Espero se entienda,
Gracias y un Saludo,

Alex
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Crear subformularios automáticamente con datos de la ficha anterior

Publicado por Alejandro (4142 intervenciones) el 16/05/2023 16:03:52
Para crear automáticamente subformularios con datos de la ficha anterior en un control de ficha en Access, puedes utilizar el evento "Después de Actualizar" del formulario principal. Aquí tienes una posible solución:

1. Abre el formulario principal en el modo de diseño.

2. Selecciona el control de ficha y ve a la pestaña "Eventos" en la barra de herramientas de propiedades.

3. Haz doble clic en el evento "Después de Actualizar" para abrir el editor de código.

4. En el editor de código, puedes utilizar VBA (Visual Basic for Applications) para crear y modificar los subformularios automáticamente. Aquí tienes un ejemplo de cómo sería el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub NombreDelControlDeFicha_AfterUpdate()
    Dim rs As DAO.Recordset
    Dim frm As Form
    Dim frmSub As SubForm
 
    ' Obtener el subformulario actual
    Set frmSub = Me.NombreDelControlDeFicha.Form
 
    ' Obtener el registro actual
    Set rs = Me.RecordsetClone
    rs.FindFirst "ID = " & Me.ID
 
    ' Obtener los datos de la ficha anterior
    If Not rs.BOF And Not rs.EOF Then
        rs.MovePrevious
        Set frm = frmSub.Form
 
        ' Copiar los datos de la ficha anterior al subformulario actual
        frm.Control1 = frmSub.Form.Control1
        frm.Control2 = frmSub.Form.Control2
        ' ... Copia todos los controles necesarios
 
        ' Guardar los cambios en el subformulario
        frm.Dirty = False
    End If
 
    rs.Close
    Set rs = Nothing
End Sub

Reemplaza "NombreDelControlDeFicha" con el nombre real del control de ficha en tu formulario. Además, ajusta los nombres de los controles y los campos según corresponda en tu caso.

El código anterior obtiene el subformulario actual y el registro actual en el formulario principal. Luego, mueve el cursor al registro anterior y copia los datos necesarios de los controles del subformulario anterior al subformulario actual. Por último, guarda los cambios en el subformulario actual.

Con esta solución, cada vez que se cambie de ficha en el control de ficha, se crearán automáticamente subformularios con los datos de la ficha anterior, lo que te permitirá realizar pequeños cambios en lugar de rellenar todos los subformularios cada vez.

Es importante tener en cuenta que este código asume que tienes una columna ID en tu tabla principal para identificar cada ficha. Asegúrate de ajustar el código según la estructura de tu base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar