Completar campo automáticamente en access 2010

Estoy haciendo una base de datos para calcular la atenuación en una instalación de televisión. La idea es tener varias tablas una para los cables, otra para derivadores, otra para tomas, etc... En cada una aparecen los modelos con las atenuaciones correspondientes.

En otra tabla el usuario seleccionará el modelo de cada componente y la idea es que los campos de atenuaciones se rellenen automáticamente y se guarden en la tabla para después calcular la atenuación total.

Otra cosa, para no tener que volver a introducir los metros de cable entre plantas había pensado en crear otra tabla en la que se introduzcan los metros de cableado para cada planta al estilo:

- P. Baja -> 3m

- P. 1º-> 5m

Y al seleccionar el usuario la planta se rellene el campo de metros de cableado automáticamente. ¿Aunque creo que en realidad es lo mismo que antes no? XD

De antemano ya digo que no tengo ni idea de VBA ni nada de prgramacion relacionada con bases de datos, salvo C y ASM a nivel bajísimo.

2 Respuestas

Respuesta
1

En el formulario, te pones en vista diseño, y en el campo en que eliges el modelo del componentes, haces click derecho cobre el, vas a la pestaña eventos, eliges después de actualizar, y le das a los puntitos que aparecen a la derecha de la fila, y generar código.

Allí escribes entre el private sub y el end sub la linea de código que te buscará el valor en la tabla y lo coloca en el cuadro correspondiente del formulario. Sería algo así:

Me.NombredelcampoaRellenar=DLookUp("Nombredelcampoarellenar","Tabla",Criterio de búsqueda)

OK. Lo entiendo mas o menos... Lo probaré y te digo. Pero no entiendo lo que significa criterio de búsqueda... Y otra cosa, con esto me guarda el dato en la tabla donde el usuario elige el componente?

Muchísimas gracias por tu tiempo y tu atención... XD

El criterio de búsqueda se refiere a esto:

Expresión de cadena opcional que se utiliza para restringir el intervalo de datos con el que se ejecuta la función DLookup. Por ejemplo, criteria suele ser equivalente a la cláusula
WHERE de una expresión SQL, sin la palabra WHERE. Si se omite criteria, la función DLookup evalúa expr para todo el dominio. Cualquier campo que se incluya en criteria debe ser también un campo de domain; de lo contrario, la función DLookup devuelve el valor
Null.

Es decir, si quieres que se filtre la búsqueda.

Y sí, te guarda el valor del campo en la tabla. (Me.NombredelcampoaRellenar)

Pues lo siento mucho pero sigo sin entender muy bien lo de la búsqueda... Lo que he entendido es que hay tengo que poner si quiero que me busce un valor en concreto o un grupo de valores...

Es así o me estoy perdiendo?

A ver, te lo explico con un ejemplo para lo de los pisos, y lo otro se haría igual:

Tienes una tabla llamada "MetrosCableado", con dos campos "Piso" y "Metros", según esto:

- P. baja -> 3m
- P. 1º-> 5m

Si en tu formulario tienes un campo que se llama Piso, y otro Metros (que es el que quieres que se te rellene automáticamente), lo que tienes que poner en el evento Después de Actualizar del capo Piso es:

Me.Metros=DLookUp("Metros","MetrosCableado","[Piso]='" & Me.Piso.Value & "'")

Es decir, busca el campo "Metros" en la tabla "MetrosCableado" en donde se cumpla que el valor del campo "Piso" es igual al valor del campo "Piso" del formulario.

Con los modelos el procedimiento sería el mismo, cambiando los campos, tablas...

Respuesta

Que bueno!, me ha funcionado solo con el campo Cliente cuando pongo el código del cliente pero necesito un paso más..

Todos mis datos están en una Tabla llamada : Factura

Al poner en el campo de CodigoCliente un 1 por ejemplo he conseguido que en el campo Cliente ponga su nombre.. pero necesito que además se pongan también los campos dirección, código postal, NIF y Teléfono.

Eso me haría padre. Pero no acierto a como hacerlo.

Mi línea ha quedado así según explico:

Me.Cliente = DLookup("Cliente", "Factura", "[CodigoCliente]='" & Me.CodigoCliente.Value & "'")

¿Cómo seguiría el código para agregar el resto de campos?

Me auto respondo... lo conseguí. Queda así el código en un botón.

Private Sub Cliente_GotFocus()
Me.Dirección = DLookup("Dirección", "ParaClientesPersiana", "[Cliente]='" & Me.Cliente.Value & "'")
Me.Población = DLookup("Población", "ParaClientesPersiana", "[Cliente]='" & Me.Cliente.Value & "'")
Me.Provincia = DLookup("Provincia", "ParaClientesPersiana", "[Cliente]='" & Me.Cliente.Value & "'")
Me.CIF = DLookup("CIF", "ParaClientesPersiana", "[Cliente]='" & Me.Cliente.Value & "'")
Me.CP = DLookup("CP", "ParaClientesPersiana", "[Cliente]='" & Me.Cliente.Value & "'")
Me.Contacto = DLookup("Contacto", "ParaClientesPersiana", "[Cliente]='" & Me.Cliente.Value & "'")
Me.Teléfono = DLookup("Teléfono", "ParaClientesPersiana", "[Cliente]='" & Me.Cliente.Value & "'")
Me.Email = DLookup("Email", "ParaClientesPersiana", "[Cliente]='" & Me.Cliente.Value & "'")
Me.CodigoCliente = DLookup("Codigocliente", "ParaClientesPersiana", "[Cliente]='" & Me.Cliente.Value & "'")
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas