Mostrar datos de un formulario en otro
Es si tengo una base de datos con tablas vinculadas y formularios la idea es que en un formulario tener campos de texto y poder mostrar datos de otro formulario o de otra tabla, por ejemplo tengo un formulario empresa, donde tengo los datos de la empresa nombre, dirección, teléfono, pero si quiero tener un campo proveedor que es de otra tabla, la idea es que en ese campo de texto me muestre el nombre del proveedor que es de otra tabla y es asociado a esa empresa.
1 Respuesta
Échale un vistazo a este ejemplo. Si pillas la mecánica de cómo funciona el DLookup no creo que tengas problemas para adaptarlo a tu BD: http://goo.gl/Yf2cm
A ver si te funciona.
hola muchas gracias por responder, estuver mirando el ejemplo primero el pdf y después el ejemplo en la base de datos, pero tengo una duda, en este ejemplo el me muestre los datos de una tabla, al seleccionar el paciente seria de la tabla TPacientes, y los valores de fecha y aseguradora también los muestra de esta tabla, yo quisiera saber si esta función me permite traer datos de otra tabla, me imagino yo que si se llegase a poder tendrian que estar relacionadas, espero me puedas aclarar esta duda gracias
Por supuesto que puedes traer datos de otra tabla. Te pongo un ejemplo muy genérico. Imagínate que tienes dos tablas: TClientes y TEmpresas, y existe un campo [XX] que relaciona ambas.
Suponiendo que estás trabajando con el formulario FClientes (basado en la tabla TClientes), y, en concreto, con el cliente cuyo campo [XX] es 253.
Para traer los datos de TEmpresas que quieras sólo tienes que hacer:
me.[CampoDestino].value = dlookup("[CampoOrigen]","TEmpresas","[XX]=" & 253)
Ten en cuenta que he considerado [XX] como valor numérico; si fuera de tipo texto debería ir entre comillas simples, así:
me.[CampoDestino].value = dlookup("[CampoOrigen]","TEmpresas","[XX]='" & 253 & "'")
A ver si con esto te funciona. Si no me dices cosas.
de nuevo muchas gracias por responder, ya que no tengo mucho conocimiento en programación, tengo dos inquietudes, me podrías dar un ejemplo de cual seria el campo destino y el campo origen, el segundo, si no estoy mal, el ejemplo que me pusiste funciona si es el valor es 253, pero si yo quiero que me traiga el dato sin tener que indicarlo esto se puede???? gracias.
Con el link al ejemplo que te pasé tienes toda la información que necesitas (pdf y BD de ejemplo). La verdad es que sin un formulario y unas tablas delante no sé cómo explicártelo (y, repito, que además lo tienes explicado en el link del ejemplo).
De todas maneras lo intentaremos, pero doy por sentado que te has "estudiado" el ejemplo que te indicaba.
El formulario (que recuerda que está basado en la tabla TClientes) tiene un control, que por ejemplo se llama txtNombreEmpresa, y tiene otro campo que es el [IdCliente].
Al mismo tiempo, en tu tabla TEmpresas, tienes un registro que te relaciona la empresa de nombre "Confeti and CO", cuyo valor está en el campo [NomEmpresa], que se relaciona con TClientes a través del [IdCliente].
Entonces, cuando en tu formulario pones que quieres trabajar con el cliente 123 ([IdCliente]=123), el control del formulario txtNombreEmpresa te sacará el nombre de la empresa a través de:
me.txtNombreEmpresa.value = dlookup("[NomEmpresa]", "TEmpresas", "[IdCliente]=" & me.[IdCliente].value)
Por otra parte es necesario que indiques un campo de filtro para el dlookup (a no ser que sepas que la tabla tiene un solo registro). Si tienes una tabla con 1000 registros y no le indicas que quieres el 150, por ejemplo, ¿cómo va a saber Access de qué registro quieres extraer la información?
A ver si así te ha podido quedar un poquito más claro.
ok ya me funciona y entiendo pero quisiera saber si hay alguna forma de hacer el filtro en dlookup de forma automática, sin tener que indicarle el valor yo, lo digo porque esta base de datos es para un grupo de mi empresa entonces si ellos necesitan un dato tendria que ir yo siempre a la formula a indicar cual es el que desean buscar, gracias
Vamos a ver...
En el ejemplo que te indiqué tienes el filtro del DLookup que coge el valor de un control en un formulario. De alguna manera tienes que indicarle qué quieres filtrar.
ha si bien ya entendí funciona perfecto, muchas gracias,tengo una inquietud mas, me explico, en el ejemplo al escoger un valor en el cuadro combinado me muestra la fecha de nacimiento y aseguradora en el mismo formulario, pero como hago para que en un formulario digamos formulario2 me muestre en campos de texto lo que escogo en el cuadro combinado del formulario1? espero haberme echo explicar, gracias
Tienes que asignar los valores a los textbox que tengas en el form2.
Supongamos que tus cuadros de texto se llaman txt1 y txt2, y que el formulario se llama Form2
En el formulario 1, cuando se ejecuta el código del cuadro combinado, tienes que añadir estás líneas:
...
Forms![Form2].[txt1].value=dlookup(...) 'para el valor que quieras obtener
Forms![Form2].[txt2].value=dlookup(...) 'para el valor que quieras obtener
...
Ten en cuenta que Form2 siempre deberá estar cargado, porque si no te dará error de código.
Aprovecho para comentarte que tengas en cuenta que normalmente, en Todoexpertos, se utiliza el sistema de "una consulta-una respuesta", y no seguir añadiendo consultas al mismo hilo. Hay expertos a quienes no les iría bien que siguieras consultando sobre el mismo hilo. Incluso hay quienes descartan directamente la consulta. Te lo comento únicamente para tu conocimiento y para que lo tengas en cuenta.
Hola muchas gracias por tus respuestas y aclaraciones y disculpa mi atrevimiento ante tantas preguntas sino que entiende que cuando uno resuelve una duda algunas veces sobre esa se generan otras, pero tratare de seguir tus sugerencias, solo para terminar y puntuarte quiero preguntarte hice lo que me indicaste para cargar el dato del un formulario a otro y este es mi código pero me saca error
Forms![Tabla3].[idcodigo].Value = DLookup("[nombre]", "cliente", "[código]='" & Me.[combinado13].Value) te explico tengo 3 formularios Tabla1,Tabla2,Tabla3, En Tabla1 esta el cuadro combinado llamado combinado13, y en el formulario Tabla3 tengo un cuadro de texto llamado idcodigo, hay quiero que la funcion Dlookup me muestre el nombre de la persona ubicada en la tabla cliente y generada al escoger el código por medio del cuadro combinado, pero me saca un error de sintaxis, y no se porque, espero puedas ayudarme y asi finalizar y poder puntuarme, gracias
Si los datos de filtro son números el filtro va directo, sin comillas simples:
DLookup("[nombre]", "cliente", "[código]=" & Me.[combinado13].Value)
Luego te sobra la comilla simple que tienes.
Si los datos de filtro son de tipo texto el filtro va entre comillas simples:
DLookup("[nombre]", "cliente", "[código]='" & Me.[combinado13].Value & "'")
- Compartir respuesta