Formulario de selección a diferentes campos de origen

Tengo una serie de formularios en mi base de datos de Access en los que he de introducir un identificador de producto. Como en mi base hay unos 700 IdProd y nadie se los conoce todos de memoria, creé un formulario de búsqueda por descripción de producto para localizar el que interese en cada caso.

Los formularios desde los que necesito acceder a este formulario de búsqueda son varios, así que se me ocurrió incluir un campo oculto de origen en el que se copia el nombre formulario desde el que se ha abierto. Así una vez seleccionado el producto deseado, me devuelve el IdProd al formulario que estaba usando.

vFormOrigen=Me.FormOrigen.Value

Forms(vFormOrigen).IdProd = Me.Lista2.Column(0)

Hasta ahora el campo de origen siempre ha sido el mismo, IdProd, por lo que esta sintaxis me ha funcionado estupendamente.
Sin embargo ahora me encuentro diseñando un formulario en el que voy a tener que incluir diferentes IdProd (IdProd1, IdProd2, IdProd3). En un principio mi idea es incluir otro campo oculto con el nombre del campo de origen. Pero no consigo hacerlo funcionar. Estoy bastante seguro que me falta definir la variable del CampoOrigen de alguna manera, pero no tengo ni idea de como.

La idea seria dejar algo así:

vFormOrigen=Me.FormOrigen.Value

vCampoOrigen=Me.CampoOrigen.Value

Forms(vFormOrigen).vCampoOrigen = Me.Lista2.Column(0)

Respuesta
1

Solucionado.

Buscando información he aprendido la diferencia entre Forms y Form, y eso ha arrojado luz sobre el asunto.
Con Forms llamo a la colección de formularios abiertos indicandole a cual me refiero. Con form me refiero a lo que hay dentro de ese formulario en concreto. Por lo que al final, la sintaxis que ha funcionado ha sido:

vFormOrigen = Me.FormOrigen.Value
vcampoOrigen = Me.CampoOrigen.Value

Forms(vFormOrigen).Form(vcampoOrigen) = Me.Lista2.Column(0)

Cierro la pregunta y nuevamente gracias a todos los que sé que hubierais contestado a ella.

1 respuesta más de otro experto

Respuesta
2

Aunque ya lo has solucionado, te comento otra sintaxis con la que podrías resolverlo, y que es más "identificativa":

Forms(vFormOrigen).Controls(vcampoOrigen) = Me.Lista2.Column(0)

Usando Controls se ve más claramente que haces referencia a un control que si usas Form.

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas