Access - Problema con cambio de fuente de datos en subformulario en MS Access

 
Vista:
sin imagen de perfil
Val: 11
Ha aumentado su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

Problema con cambio de fuente de datos en subformulario en MS Access

Publicado por Ibrahim (4 intervenciones) el 09/04/2021 20:54:45
Buenas tardes y de antemano muchas gracias. He buscado mucho y no consigo la solución, por eso pregunto por aquí. Estoy haciendo una rutina que cambie el origen de datos de un subformulario dependiendo de si un campo tiene un valor numérico o no, "F_ALB_F" y "F_ALB_NOF" son consultas destinadas a ser el origen de datos. El error lo da al ejecutar la instrucción dentro del IF

Obtengo el error 2766 em tiempo de ejecución "El objeto no contiene el objeto de automatización 'Formularios' "

El código en VBA es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub prueba()
 
Dim valor As Integer
 
valor = Forms("factura").CODALB.Value
 
      If (IsNumeric(valor)) Then
 
           Forms!factura!F_ALB.Form.RecordSource = "F_ALB_F"
 
 
       Else
 
            Forms!factura!F_ALB.Form.RecordSource = "F_ALB_NOF"
 
       End If
 
End Sub
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

Problema con cambio de fuente de datos en subformulario en MS Access

Publicado por Anonimo (3319 intervenciones) el 09/04/2021 21:15:45
Access espera un origen de datos real o una SQL que de lugar a ese origen de datos.

El error ocurre al evaluar la expresión, no reconoce a la consulta por el nombre (el mensaje es difuso porque el error es indefinido)

Una posible solución iría en la línea de poner las consultas en su 'vista SQL', copiar el contexto y pegarlo en lugar de sus nombres (su SQLs)
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
Val: 11
Ha aumentado su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

Problema con cambio de fuente de datos en subformulario en MS Access

Publicado por Ibrahim (4 intervenciones) el 10/04/2021 00:52:12
Muchas gracias por tu pronta respuesta. Fíjate que he estad haciendo unos ensayos. En el siguiente varío el contenido de otro formulario con las mismas consultas (no es un subformulario)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub toogle_Change()
 
Dim valor As Integer
 
valor = Forms("F_ALB_F").toogle.Value
 
If (valor = 1) Then
 
    Forms!F_ALB_F.RecordSource = "F_ALB_F"
 
 
Else
 
    Forms!F_ALB_F.RecordSource = "F_ALB_NOF"
 
End If
 
End Sub

Funciona perfectamente,

También hice este ensayo a ver si la sintaxis apuntando al subformulario estaba mala, pero esta buena, este funciona perfecto tambien

Forms!factura!F_ALB.Form.visible = "True"

Con este aparezco y desaparezco el subformulario usando su propieda "Visible".

Pero cuando cambio el visible = "True" por RecordSource = "F_ALB_NOF" me da el error

Agradecido nuevamente!!
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

Problema con cambio de fuente de datos en subformulario en MS Access

Publicado por Anonimo (3319 intervenciones) el 10/04/2021 14:51:20
Hay muchas formas de programar pero no todas llevan al mismo sitio, si no fuera así no se programaría: se rellena un formulario y todos iguales ante el usuario (sobran los programadores).

Los formularios no pierden sus propiedades por el hecho de ser utilizados como subformularios, una persona no pierde 'sus propiedades' por el simple hecho de ser abuelo, padre o hijo y la propiedad 'visible' la tiene (en ese contexto) tanto como objeto formulario como un simple objeto de otro formulario (como si fuera un ComboBox o un simple cuadro de texto).

La información que 'me' falta es si los origenes de datos son coherentes con el formulario que comparten (aclaro este punto):
1.- ¿Funciona de forma correcta como origen de datos "F_ALB_F"?
2.- Se puede concluir que 'solo' falla "F_ALB_NOF" como origen de datos? (para el mismo formulario)
3.- Esto:
1
valor = Forms("F_ALB_F").toogle.Value

Implica que el formulario "F_ALB_F" esta abierto para poder acceder a su objeto "toogle" y obtener su valor, y (curiosamente) no esta en funciones de subformulario (esta abierto directamente) sea o no el objeto activo.

No tengo muy claro ese entorno y es probable que a Access se le líen los objetos (o el mismo objeto en dos ubicaciones).

Por ejemplo esto:
1
2
3
4
5
6
7
Dim valor As Integer
 valor = Forms("factura").CODALB.Value
 If (IsNumeric(valor)) Then
 Forms!factura!F_ALB.Form.RecordSource = "F_ALB_F"
 Else
 Forms!factura!F_ALB.Form.RecordSource = "F_ALB_NOF"
 End If

Se podrá hacer así:

1
If IsNumeric ( Forms.factura.CODALB ) Then  Forms!factura!F_ALB.Form.RecordSource = "F_ALB_F"

Con la doble alternativa:

1
Forms!factura!F_ALB.Form.RecordSource = IIF (IsNumeric ( Forms.factura.CODALB ),  "F_ALB_F",  "F_ALB_NOF")

Ninguna es mejor que la otra son diferentes formas (y si funciona una, funcionan las otras)

Cuando se aclaren las dudas se vera mas cerca el final.
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
Val: 11
Ha aumentado su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

Problema con cambio de fuente de datos en subformulario en MS Access

Publicado por Ibrahim (4 intervenciones) el 10/04/2021 15:55:27
Hola, buenos días. Muy agradecido nuevamente por tu ayuda.
El formulario "F_ALB_F" es solo una prueba, un formulario que cree a partir de la consulta del mismo nombre para probar que tanto la consulta F_ALB_F y la F_ALB_NOF pueden alimentar el formulario perfectamente e intercambiar entre ambas en tiempo de ejecución. Esto funciona perfecto. Quiere decir que tanto las consultas como el uso de la propiedad RecourdSource en el formulario F_ALB_F funcionan correctamente. O sea, que la respuesta a tus preguntas 1 y 2 es que ambas consultas funcionan correctamente y las puedo intercambiar en tiempo de ejecución, pudiendo ver el cambio en el formulario en tiempo de ejecución. Estas consultas tienen los mismos datos, solo que F_ALB_F tiene un filtro y F_ALB_NOF no lo tiene (por eso el NO antes de la F)

Para la paplicación que intento hacer aplican los formularios "factura" que me da la condición de cambio para el origen de datos de su subformulario F_ALB.

Es importante que sepas que no hice una integridad referencial en la relación del formulario "factura" con su subformulario "F_ALB"., Te explico la razón: Lo que estoy haciendo es una factura (formulario factura) en base a un albarán (subformulario F_ALB, que a su vez tiene otro subformulario para las líneas del albaran)- En terminos de tablas hay una tabla con la información de la factura, otra con la información del albarán y una tercera con las líneas del albarán (el subformuario del albarán si está ligado con integridad referencial al subformulario de las línes), ambos subformularios están inhabilidatos para edición pues solo deben mostrar la información. El usuario abre el formulario de facturas, coloca el número de factura y fecha de la misma, pero el registro de la factura no tiene un albarán asociado aún. El usuario va navegando por los albaranes hasta saber de cual quiere la factura, en ese momento presiona un botón para vista previa de impresión, en ese momento escribo el número del albaran que el usuario escogió en el campo del número de albarán de la tabla de factura, en ese momento ya la factura tiene su albarán asociado. Luego si el usuario quiere ver las facturas anteriores necesito que la infromación del subformulario albarán muestre el albarán correspondiente. Solo cuando el usuario esta creando una factura nueva se muestran todos los albaranes para escoger el correspondiente a esta factura nueva. Una vez escogido el albarán a factura (al hacer click en el botón) ya quedan ligados el albarán y la factura, ya al estar en el registro de esa factura el usuario no podrá ver todos los albaranes, Mi idea es cuando se esta haciendo la factura mostrar en el subformulario los datos de la consulta F_ALB_NOF que son los albaranes sin filtro, una vez que ya se escogió el albarán de esa factura (clikc), ahora solo muestra los datos de la consulta F_ALB_F que esta filtrado por el valor del campo del albarán del registro de la correspondiente factura (antes del click, no habia nada en ese campo)

Te agradezco mucho nuevamente tu ayuda. Si crees que se puede hacer de otra forma es muy bienvenida tu idea.

Muchas gracias nuevamente!
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

Problema con cambio de fuente de datos en subformulario en MS Access

Publicado por Anonimo (3319 intervenciones) el 10/04/2021 23:46:49
Creo que complicas lo sencillo.

Un simple formulario con los elementos a seleccionar (albaranes o lo que sea) y sin ningún filtro.

Por ejemplo tres botones que aplicarán filtros en tiempo de ejecución:
.- Uno para aplicar sobre los facturado o una factura en concreto para ver si 'están los que tiene que estar'
.- Otro que selecciona los que no estén asociados a facturas para poder facturarlos
.- El tercero ... simplemente quita todos los filtros

Podría haber mas botones, por ejemplo: para ordenar el conjunto por el campo activo (fecha, cliente, albarán, factura ....) cualquier cosa que permita facilitar la labor, otro para asociarlo a una factura (solo estará activo si esta sin facturar), para .....

Y sin ninguna consulta en un único formulario se podrá hacer un montón de operaciones (la de facturar incluida).

Se utiliza la propiedad FILTER del formulario y el filtro se activará o desactivará (sin borrar el contenido del filtro) a voluntad.

No deja de ser un punto de vista que pretende una manera ergonómica de trabajar, pero que siempre dependerá (y necesitara) la colaboración del usuario (porque no todos los usuarios entienden a los programadores ni todos los programadores son expertos en las materias a manipular).
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
Val: 11
Ha aumentado su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

Problema con cambio de fuente de datos en subformulario en MS Access

Publicado por Ibrahim (4 intervenciones) el 10/04/2021 23:54:08
Bueno es una vuelta, también puedo cambiar la filosofía. Pero no supimos que paso y por que dio ese error. No puedo tocar la tabla de albaranes, por que no puedo agregar en esa tabla un campo para saber si ya esta factura el albarán x, Por lo pronto le puse la relación entre el formulario de la factura y el subformulario del albarán y le di al usuario una forma de ver los albaranes y colocar manualmente el albarán asociado a la factura... ahí lo voy desarrollando pero me deja un mal sabor de boca no saber que paso...
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