Access - Referencia a la colección Controls en una sección

 
Vista:
sin imagen de perfil

Referencia a la colección Controls en una sección

Publicado por Rafael (3 intervenciones) el 10/11/2017 10:49:39
Tengo un código para recuadrar con formato de "Hoja de cálculo" la impresión de la sección detalle en un subformulario:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'Dibuja un rectángulo alrededor de cada control en la sección que tiene
'   "Borde" en la propiedad de la etiqueta "Información Adicional"
    For Each ctl In Me.Section(0).Controls
        If ctl.Tag = "Borde" Then
            If ctl.Height > intMaxHeight Then
                intMaxHeight = ctl.Height
            End If
        End If
    Next
 
    For Each ctl In Me.Section(0).Controls
        If ctl.Tag = "Borde" Then
'           Pone el fondo del color elegido
            Me.Line (ctl.Left, ctl.Top)- _
                Step(ctl.Width, intMaxHeight), lngForegrnd, BF
            Me.Line (ctl.Left, ctl.Top)- _
                Step(ctl.Width, intMaxHeight), vbBlack, B
        End If
    Next

Quiero pasarlo a un módulo como función para usarlo con el resto de subformularios, pero al tener las referencias "locales" (Me.Section(0).Controls) no los encuentra.

He probado con un código que me calcula el índice en la colección Controls (intNumCtl) y obtengo las propiedades del subformulario con Reports!rptInforme.Controls(intNumCtl), pero cuando sustituyo esto por la referncia local (Me) siempre me da error en (Reports!rptInforme.Controls(intNumCtl).Section(0).Controls)

¿Qué estoy haciendo mal?
Muchas gracias.
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

Referencia a la colección Controls en una sección

Publicado por Anonimo (3319 intervenciones) el 10/11/2017 16:07:44
A una función se le pueden pasar parámetros ... ¿Qué impide 'pasarle' como referencia el destino que en local seria el origen?

Con 'Me' se referencia al objeto actual, añádasele la sección y podrá utilizarse como referencia universal, no dejaría de ser un parámetro mas (si es que se le envían otros ....)
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
sin imagen de perfil

Referencia a la colección Controls en una sección

Publicado por Rafael (3 intervenciones) el 13/11/2017 09:33:27
Lo primero gracias por tu atención.

A lo mejor no me he explicado bien. Sin llegar a llamar a la función, he sustituido previamente el nombre local «Me.Section(0).Controls» por otro más excplicito y general «Reports!rptInforme.Controls(intNumCtl)». Este código se encuentra en un evento de la sección detalle del subinforme, y se ejecuta al abrir el informe principal (que abre el subinforme).

La referencia «Reports!rptInforme.Controls(intNumCtl)» define perfectamente el subinforme («Controls(intNumCtl)» se refiere a un subinforme) dentro del informe principal, y me permite acceder a propiedades como el nombre, pero cuando le añado «.Section(0).Controls» ya no funciona (como sí funcionaba con «Me.Section(0).Controls») y da error. No puedo acceder a las propiedades de los controles que tiene el subinforme. Todo ello sin llamar a ninguna función. Sólo la llamada que el informe principal hace al subinforme (y a su evento).

Si sustituyendo la "nomenclatura" impícita «Me» por la explícita no me funciona, me temo que no funcionará si llamo desde una función.
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

Referencia a la colección Controls en una sección

Publicado por Anonimo (3319 intervenciones) el 14/11/2017 03:12:58
A un objeto de Access se le puede designar por un numero o un alias (también conocido como 'Nombre') dentro de su subconjunto

En Access es asi:

Informes ... Nombre del informe .... control

Si hay un sub informe:

Informes ... Nombre del informe .... control .... INFORME ... control

Se podría transcribir asi:
Informes ... Nombre del informe .... (control .... que es un INFORME ) ... control


Si se utiliza 'me' como parámetro al llamar a una función, esta debería recibir la ruta absoluta del objeto activo que esta corriendo el código, y si le faltase 'algo', bastaría añadírselo al 'Me' que se envía a la función (por ejemplo cuando se desea hacer referencia a un subformulario desde el formulario principal, algo que si conoce el programador pero que Access no puede adivinar)
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
sin imagen de perfil

Referencia a la colección Controls en una sección

Publicado por Rafael (3 intervenciones) el 14/11/2017 08:07:47
Muchas gracias. Voy a revisarlo a ver si es que hay algo que se me escapa.
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