Como autocompletar un formulario en access 2010

Tengo una BD en access 2010 y quiero que al llenar un formulario para entrar las ventas o compras de algún producto, al poner el código de este, se autocomplete con los demás datos de la tabla Catalogo de Productos que ya está en la BD

2 respuestas

Respuesta
1

Para eso tienes que programar en el evento Después de actualizar del campo "Código" una serie de funciones DLookUp para que te busquen en la tabla los valores que quieres que se autocompleten. Por ejemplo, si en el formulario tienes estos cuadros de texto: txtCodigo, txtProducto y txtPrecio, y quieres que txtProducto y txtPrecio se autocompleten, el código sería así:

Private Sub txtCodigo_AfterUpdate()

'Si el campo está vacío, salimos sin hacer nada:

If Not Isnull(Me.txtCodigo) Or Me.txtCodigo="" Then Exit Sub

'Buscamos los valores y los pasamos a los cuadros:

Me.txtProducto=Nz(DLookUp("Producto","[Catalogo de Ventas]","[Codigo]=" & Me.txtCodigo),"")

Me.txtPrecio=Nz(DLookUp("Precio","[Catalogo de Ventas]","[Código]=" & Me.txtCodigo),"")

End Sub

Un par de comentarios:

1º/ El código te funcionará así si el campo txtCodigo en numérico. Si fuera de tipo texto, tendrás que cambiar esto: "[Código]=" & Me.txtCodigo, por esto otro: "[Código]='" & Me.txtCodigo & "'"

2º/ DLookUp funciona de la siguiente manera: DLookUp("Campo a buscar";"Tabla donde buscar","Criterio")

3º/ Uso la función Nz por si acaso no se encuentra el código en la tabla, para evitar errores y que el campo quede en blanco.

Ah, me olvidaba!

Por si no lo sabes, para escribir el código, te colocas en Vista Diseño del formulario, haces click con el botón derecho encima del cuadro de texto, y le das a Propiedades. Vas a la Pestaña Eventos, en Después de actualizar, le das al botón de los 3 puntos que aparece a la derecha, y eliges Generador de códigos. Se te abrirá el editor de Visual Basic, y ahí es donde le pones el código

Hola, ya escribí el código como me dijiste, pero el campo txtCódigo es de texto y no me deja hacer la modificación que me sugieres, me da un error de expresión

Hola, lo que me sugeriste me quedó como te pongo abajo, pero no me da el resultado que quiero, te agradecería que me lo revisaras y me dieras tu sugerencia.

Saludos

Private Sub txtCódigo_AfterUpdate()
If Not IsNull(Me.txtCódigo) Or Me.txtCódigo = "" Then Exit Sub
End Sub
Private Sub Descripción_AfterUpdate()
Me.txtDescripción = Nz(DLookup("Descripción", "[Catalogo productos]", "[Código]=" & Me.txtCódigo) & "")
End Sub
Private Sub precio_AfterUpdate()
Me.txtPrecio = Nz(DLookup("Precio", "[Catalogo productos]", "[Código]= " & Me.txtCódigo) & "")
End Sub

tienes que poner todo el código en el mismo evento, en después de acctualizar del campo txtCodigo (suponiendo que se llame así en tu formulario). El otro error que tienes es que te faltan comillas simples en la parte de "[Código]=".

El código sería así:

Private Sub txtCodigo_AfterUpdate()
'Si el campo está vacío, salimos sin hacer nada:
If Not Isnull(Me.txtCodigo) Or Me.txtCodigo="" Then Exit Sub
'Buscamos los valores y los pasamos a los cuadros:
Me.txtProducto=Nz(DLookUp("Producto","[Catalogo de Ventas]","[Codigo]='" & Me.txtCodigo &"'"),"")
Me.txtPrecio=Nz(DLookUp("Precio","[Catalogo de Ventas]","[Codigo]='" & Me.txtCodigo &"'"),"")
End Sub

Te pongo separada la parte del final del Dlookup, para que veas lo que te digo de las comillas simples:

"[Codigo]= ' " & Me.txtCodigo & " ' "

Evidentemente, en tu código tendrás que usar los nombres que le tengas a tus cuadros de texto y campos de las tablas, y no los que puse yo a modo de ekemplo. Para saber los nombres de los caudros de texto, vete a las propiedades de cada cuadro, a la pestaña Otras, y propiedad Nombre. Ese es el nombre que has de usar en el código, en vez del txtCodigo, etc...

Si tienes más campos a autorellenar, tendrás que seguir añadiendo tantas lineas como la de txtProducto o txtPrecio necesites.

Hola, estuve unos dias ausente, por eso no habia escrito,

Volvi a escribir el código fijandome bien en lo que me dices y en los nombres de los campos y las tablas, pero hay algoque no está bien porque no me da el resultado que necesito, aqui te vuelvo a poner todo el código, te agradezco  mucho la ayuda y el interes.

Ah: nunca habia escrito un código de programación, quizas hay algo elemental que no estoy haciendo.

Saludos.

Private Sub txtCódigo_AfterUpdate()
If Not IsNull(Me.txtCódigo) Or Me.txtCódigo = "" Then Exit Sub
Me.txtDescripción = Nz(DLookup("Descripción", "[Catalogo productos]", "[Código]='" & Me.txtCódigo & "'"), "")
Me.txtPrecio = Nz(DLookup("Precio", "[Catalogo productos]", "[Código]='" & Me.txtCódigo & "'"), "")
End Sub

Así, a primera vista no le veo ningún error al código...

Haz una cosa:

Comprime la bd en un archivo .rar o .zip y súbela a www.filebig.net u otra web similar de almacenamiento de archivos y me pegas aquí el enlace de descarga. Si usas dropbox o similar, también me puedes pasar el enlace de descarga.

Hola, subí la Bd, aquí te pongo el link para la descarga:

<a>http://www.filebig.net/files/K8vtGQfnNK</a>

Solo dejé dos productos para que fuera mas pequeña, puedes agregar alguno si lo necesitas. Si no es mucho pedir me gustaría que me ayudaras en otras cosas que quiero agregarle.

Saludos y muchas gracias por el interés.

Hola, te ruego me disculpes, la primera vez subí una versión anterior de la que estoy trabajando ahora, aquí te pongo el enlace correcto:

http://www.filebig.net/files/Xy8yHjSknn

Muchas gracias y disculpa el error.

Saludos

Para el formulario Compras, el código es este:

Private Sub Codigo_AfterUpdate()
If IsNull(Me.Codigo) Or Me.Codigo = "" Then Exit Sub
Me.Descripción = Nz(DLookup("Descripción", "[Catalogo productos]", "[Código]='" & Me.Codigo & "'"), "")
Me.precio = Nz(DLookup("Precio", "[Catalogo productos]", "[Código]='" & Me.Codigo & "'"), "")
End Sub

Y para Ventas_Detalle, este otro:

Private Sub Id_Producto_AfterUpdate()
If IsNull(Me.Id_Producto) Or Me.Id_Producto = "" Then Exit Sub
Me.Descripcion = Nz(DLookup("Descripción", "[Catalogo productos]", "[Código]='" & Me.Id_Producto & "'"), "")
End Sub

Tu problema estaba en los nombres de los controles del formulario, ponías literalmente los de mi código (que eran una mera suposición) en vez de poner los que tu tenías.

Una recomendación: mejor si no usas acentos ni caracteres "raros" en los nombres de los campos de las tablas, pues luego pueden dar lugar a errores en el código.

Te resubo la BD con los códigos. http://filebig.net/files/RphyFWtRXa

Para otras cuestiones, finaliza esta pregunta y abre una nueva por cada consulta, pero a partir del jueves, que hasta entonces estoy de viaje y seguiré no disponible para nuevas preguntas.

Hola, ya probé y funciona muy bien, muchas gracias por tu ayuda, sigo perfeccionando mi BD, mas adelante te haré otras preguntas, espero seguir contando con tu ayuda.

Respuesta

Me puedes ayudar a mi más. ¿Estoy intentando hacer esto desde hace muchos meses y no me sale y no hay mucha información en la red...?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas