Access - lista desplegable con valor seleccionado

   
Vista:

lista desplegable con valor seleccionado

Publicado por Ana (6 intervenciones) el 24/04/2015 11:33:02
Hola a todos!

En primer lugar agradeceros a todos los mensajes de este foro que son buenísimos y siempre me ayudan a solucionar mis dudas con access.
Soy muy novata en la programación de vba. Estoy modificando la bbdd predeterminada para inventario que trae access y llevo días intentando hacer algo y sin solución:

Tengo un formulario abierto llamado "Inventario". Al pulsar un botón del mismo quiero que se abra el formulario llamado "Compras" y que en dos listas desplegables que tiene este formulario estén seleccionadas por defectos dos variables del "inventario": el nombre del producto y el proveedor.
Es decir, lo que quiero es que cuando tenga que comprar un producto porque en el inventario esté a 0, pulsando el botón, se abra el formulario de compras y ya aparezca por defecto seleccionada en la lista de artículos, el artículo que quiero comprar y el proveedor del mismo.

Espero haberme explicado bien. Agradezco cualquier sugerencia para conseguir mi objetivo, ya que llevo días de trabajo perdidos y de no conseguirlo ya, tendré que optar por abandonarlo.

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto

lista desplegable con valor seleccionado

Publicado por Norberto (432 intervenciones) el 27/04/2015 15:26:04
Hola.

Explicas perfectamente lo que quieres, pero no das suficiente información sobre qué hay en cada formulario por lo que paso a especular.

Supongamos que en el formulario Inventario tenemos un control con el identificador del producto, que es lo más lógico, y otro con el proveedor del mismo. Si esto último no es así, deberás modificar el origen del registro para que lo incluya. Hechas estas suposiciones, supongamos que los nombres de los controles que los contienen son IdArtículo e IdProveedor.

En el formulario Compras dices que tienes sendos combos. Como no dices cómo se llaman, supongamos que, igual que en el primer formulario, se llaman IdArtículo e IdProveedor.

Hechas las suposiciones, pasemos a la acción:

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub cmdComprar_Click() 'Al pulsar el botón
    Dim frm As Form
 
    DoCmd.Close acForm, "Compras", acSaveNo 'Por si estuviera abierto
    DoCmd.OpenForm "Compras", , , , acFormAdd 'Lo abrimos en modo añadir datos
    Set frm = Forms("Compras") 'Asignamos el formulaio a una variable de objeto, más que nada para manejarlo mejor
    frm!idArtículo.DefaultValue = Me.IdArtículo 'Asignamos el valor por defecto igual al artículo de este form
    frm!idProveedor.DefaultValue = Me.IdProveedor 'Lo mismo
 
    Set frm = Nothing 'Limpiamos la variable
 
End Sub

En tu caso, deberás sustituir las partes en negrita por los nombres que tengan los controles, tanto en el formulario Compras (frm!Id...), como en el formulario Inventario (Me.Id...).

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

lista desplegable con valor seleccionado

Publicado por Ana (6 intervenciones) el 27/04/2015 15:57:54
Muchas gracias Norberto,

Hoy estoy con mucho trabajo, pero mañana comprobaré el código que me has enviado y si con eso consigo lo que necesito. Te agradezco la respuesta.
En caso de duda, mañana volveré a escribir con más información de los formularios o, por el contrario, cerraré el tema.
Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

lista desplegable con valor seleccionado

Publicado por Ana atalaminos@avandtel.com (6 intervenciones) el 28/04/2015 13:05:41
Hola de nuevo Norberto,

Ya pude probar tu código. Tus especulaciones fueron correctas.
El problema es que me da un error en la línea 7. Concretamente me dice "Se ha producido el error 438 en tiempo de ejecución. El objeto no admite esta propiedad o método".

No sé si el problema puede venir porque el combox que hay en el formulario compras y que se llama [Id de producto] se rellena a través de una tabla/consulta con un select.

La bbdd en la que estoy trabajando es la que viene con Access 2007 y se llama "Northwind 2007". Dentro hay un formulario llamado "inventario" con un botón "comprar". Ya a ese formulario le he añadido un cuadro de texto que me carga el [Id de proveedores]. Por lo tanto, en el formulario "inventario" tengo [id de proveedores] y [Product Name].

Al pulsar el botón se abre el formulario "Detalles de pedidos de compra" y quiero que se carguen los combox [Id de producto] y [IdProveedor], pero no hay manera!! La idea de hacerlo es porque es absurdo tener un botón para comprar el producto si luego, cuando entro en el formulario, de compra, tengo que volver a buscarlo de una lista enorme y encima saber también cuál es su proveedor....

Me puedas o no ayudar, gracias por tu tiempo.
Saludos.
Ana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto

lista desplegable con valor seleccionado

Publicado por Norberto (432 intervenciones) el 04/05/2015 17:03:51
Hola de nuevo.

Ya lo siento pero no conozco la aplicación Northwind de Access 2007 ya que trabajo con la versión 2003 y no son compatibles.

Un saludo y a ver si lo consigues,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

lista desplegable con valor seleccionado

Publicado por Ana (6 intervenciones) el 06/05/2015 18:18:33
Lo logré!

Pongo el código, por si a alguien le sirve...

1
2
3
4
5
6
7
8
9
10
11
Dim proveedorActual As String
Dim producto As String
Dim frm As Form
 
producto = Me.Product_Name
 
DoCmd.Close acForm, "Detalles de pedidos de compra", acSaveNo 'Por si estuviera abierto
DoCmd.OpenForm "Detalles de pedidos de compra", , , , acFormAdd 'Lo abrimos en modo añadir datos
Set frm = Forms("Detalles de pedidos de compra") 'Asignamos el formulaio a una variable de objeto, más que nada para manejarlo mejor
frm.[Supplier ID].Value = proveedorActual  'Asignamos el valor por defecto igual al artículo de este form
Set frm = Nothing 'Limpiamos la variable


Saludos y gracias a Norberto porque a partir de su sugerencia pude conseguirlo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar