Formulario

Tengo una duda y el problema es que no como realizar la siguiente operación.
Por ponerte un ejemplo sencillo imagínate que tengo una base de datos con 3 campos en una tabla access:
CODCLIE
NOMBRE
DIRECCIÓN
Y lo que quiero realizar es un formulario de consulta en el cual me aparezca un desplegable en el campo CODCLIE y cuando seleccione uno de los clientes de mi base de datos, que automáticamente me actualize nombre y dirección con los datos de ese cliente en dicho formulario.
No encuentro la forma de hacerlo.
El ejemplo real que estoy utilizando el mucho más largo pero en el fondo es lo mismo.
Hay gente que me ha dicho aunque no sabe como, que se puede realizar con access, otros me han dicho que hay que realizar un módulo en VB, pero el caso es que no lo tengo claro.
Si se pudiera realizar en Access mejor, ya que mis conocimientos de Visual Basic son muy escasos.
De antemano, muchísimas gracias.
Juan Miguel Zamorano

3 respuestas

Respuesta
1
Es bastante fácil.
Primero tendrás que crearte un formulario con los 3 campos. Luego creas otro formulario, con el desplegable. A ese desplegable le das un nombre (selector, por ejemplo). Luego en este segundo formulario insertas como subformulario el otro que hiciste antes, indicándole en las propiedades, cuales son los campos comunes (uno sera selector, y el otro el nombre del campo). Y así lo conseguirás
Si tienes más dudas me lo comentas.
Respuesta
1
Para hacer lo que deseas en Access puedes utilizar el método dlookup, que es bastante sencillo y resuelve muchas circunstancias similares a la que tu quieres implantar.
En el ejemplo que tu planteas de un formulario con un campo que contiene un combobox, en el que puedes seleccionar un cliente, y que a continuación te rellene automáticamente el valor de otros campos de la tabla origen de datos de ese formulario.
Pues bien, en el evento después de actualizar del combo box (AfterUpdate) debes añadir los valores que calcularas con el método dlookup de la siguiente forma:
[Dirección]=dlookup("Direccion";"Clientes";"CodCli=" & [NombreComboBox])
Como puedes observar la función dlookup esta compuesta por tres partes, separadas con (;) y entrecomilladas. La primera (Dirección) es el nombre del campo que queremos buscar. La segunda (Clientes) es el nombre de la tabla donde queremos localizar el registro. Y la tercera contiene los criterios de búsqueda, en el ejemplo, buscamos el cliente cuyo código es igual al código del combo box.
También podías haber utilizado un campo independiente, en lugar de un combo box, esta última forma de hacerlo es más rápida, ya que Access no tiene que cargar registros.
Respuesta
1
Juan Miguel,
Como ya te han dicho, una manera de solucionar eso seria con una pequeña subrutina en VB, pero la verdad es que si es solo para lo que dices, no es necesario.
Eso puede solucionarse mediante una consulta de JOIN entre las dos tablas, la de clientes y la de los datos en si (no se que tipo de datos tienes, debe ser algo como facturas o algo así). Como no se si tienes mucha experiencia (todavía) en access, te daré todos los pasos:
1. Crea una nueva consulta en la base de datos.
2. Incluye las dos tablas en cuestión (datos y clientes)
3. Asegurate de que existe una relación entre las dos tablas´según el campo de enlace (en este caso CODCLIEN), y si no existe creala.
4. Añade a la consulta todos los campos que quieras de la tabla de datos más CODCLIE, NOMBRE, DIRECCIÓN de la tabla de clientes.
5. En el formulario en cuestión, asigna la nueva consulta como origen de datos.
6. El 'Campo de datos' para cada cuadro de texto debe estar asignadocon el campo correcto de la consulta.
7. Ahora cuando estés introduciendo datos a través del formulario, cada vez que selecciones un CODCLIE de la lista, el recordset que contiene los datos se modificara automáticamente y los campos NOMBRE y DIRECCIÓN correspondientes al código seleccionado se te mostraran.
Espero haberte ayudado. Si no, puedes enviarme un email normal a la siguiente dirección, y si quieres puedo enviarte yo algún ejemplo cortito.
Suerte,
cArLeS!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas