Access - Podeis ver mi codigo idecirme que puedo hacer para

 
Vista:

Podeis ver mi codigo idecirme que puedo hacer para

Publicado por Angelica (3 intervenciones) el 24/03/2006 20:12:32
HOLA A TODOS TENGO UN PEQUEÑO PROBLEMA TENGO TENGO UN FORMULARIO CON UN SUB FORMULARIO LOS CUALES TIENEN EL MISMO ORIGEN LO QUE QUIERO HACER ES QUE SI ME SITUO EN UN REGISTRO EN EL SUB FORMULARIO "CENTROS_LISTADO" ME ACTUALICE EL FORMULARIO PADRE "CENTROS" ASI QUE LO QUE HE ECHO SON DS FUNCIONES UNA QUE ME ACTUALICE EL HIJ CUANDO ESTOY EN EL PADRE Y LA OTRA QUE ME ACTUALICE EL PADRE CUANDO ESTOY EN EL HIJO PERO CUANDO SE ESTA EJECUTANDO ESTO PETA HE CREADO UN SEMAFORO O ALGO PARECIDO PARA NO CAER EN UN BUCLE SIN FIN ESTE ES EL CODIGO:

CENTROS:

Private Sub Form_Current()
Call sSubformularioSituar(Me.CENTROS_Listado)
End Sub


Sub sSubformularioSituar(poSubForm As SubForm)
mbParar = True
MsgBox Me.CENTROS_Listado.Form.RecordSource

Set poSubForm.Form!Recordset = Me.Recordset
mbParar = False
End Sub

CENTROS_LISTADO

'Public A As String
Private Sub Form_Current()
If mbParar = False Then
If Not (Me.Parent Is Nothing) Then
Call sMainformularioSituar(Me)
End If
End If
End Sub


Sub sMainformularioSituar(poSubForm As Form)
Set poSubForm.Parent.Form.Recordset = poSubForm.Recordset
End Sub

VARIABLE PUBLICA CREADA EN UN MODULO
Public mbParar As Boolean

GRACIAS POR TODO
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

Actualizar formulario padre desde subformulario al situarse en un registro

Publicado por Alejandro (4142 intervenciones) el 17/07/2023 22:43:35
La solución para actualizar el formulario padre desde el subformulario al situarse en un registro se puede lograr utilizando el evento "Current" en ambos formularios. Aquí tienes el código modificado para evitar el bucle infinito y lograr el resultado deseado:

CENTROS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Form_Current()
    If Not Me.CENTROS_Listado.Form.Current Is Nothing Then
        If Not Me.CENTROS_Listado.Form.Current Is Me.CENTROS_Listado.Form.Previous Then
            Call sSubformularioSituar(Me.CENTROS_Listado.Form.Current)
        End If
    End If
End Sub
 
Sub sSubformularioSituar(poSubForm As Form)
    If Not poSubForm.Parent Is Nothing Then
        mbParar = True
        poSubForm.Parent.Form.RecordsetClone.FindFirst "ID = " & poSubForm.Recordset.Fields("ID").Value
        poSubForm.Parent.Form.Bookmark = poSubForm.Parent.Form.RecordsetClone.Bookmark
        mbParar = False
    End If
End Sub

CENTROS_LISTADO:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Form_Current()
    If mbParar = False Then
        If Not (Me.Parent Is Nothing) Then
            Call sMainformularioSituar(Me)
        End If
    End If
End Sub
 
Sub sMainformularioSituar(poSubForm As Form)
    If Not poSubForm.Parent Is Nothing Then
        mbParar = True
        poSubForm.Parent.Form.RecordsetClone.FindFirst "ID = " & poSubForm.Recordset.Fields("ID").Value
        poSubForm.Parent.Form.Bookmark = poSubForm.Parent.Form.RecordsetClone.Bookmark
        mbParar = False
    End If
End Sub

En este código, se agregó una verificación adicional para evitar que se ejecute la actualización si el registro actual del subformulario es igual al registro anterior. También se utiliza un clon del recordset para buscar el registro correspondiente en el formulario padre y asignar el bookmark adecuado.

Recuerda declarar la variable pública "mbParar" en un módulo, tal como lo has hecho.

Con esta solución, podrás actualizar el formulario padre desde el subformulario al situarse en un registro sin caer en un bucle infinito.

Espero que esta solución te sea útil. ¡Buena suerte!
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