Como pasar un dato al hacer clic o escape y dependiendo del registro seleccionado pase la información al primer menu

Tengo un formulario de alta de productos que tiene los siguientes capos

Idcodigo, descripcion, empaque, ubicacion

Y tiene un botón para llevar a otro formulario para buscar el código de producto de un producto que solo se el nombre pero no el código, al dar el producto buscado se me despliega un listado de varios productos que coinciden con el nombre, entonces quiero seleccionar el código y al dar escape o clic, el numero de código lo pase al campo código y me muestre el producto que seleccione, es decir me regrese a la primera pantalla

Primera imagen

pantalla de búsqueda

pantalla final si selecciono  1515

Me lleve a ese producto

2 respuestas

Respuesta
3

Lo que le indican hace es abrir nuevamente el formulario y puede llegar el momento en que Access colapse, para esto se clona el recordset del formulario principal y se hace la búsqueda. Tengo este ejemplo, consta de una tabla y dos formularios.

TABLA

... Siguen más registros

FORMULARIO PRINCIPAL

Si hago clic en buscar y selecciono el idpedido número 10250,

Obtengo

CÓDIGO DEL BOTÓN BUSCAR

Private Sub btnBuscar_Click()
  DoCmd.OpenForm "frmBuscar", , , , acFormReadOnly, acDialog
End Sub

CÓDIGO DEL FORMULARO <<BUSCADOR>>

Se programa el evento al Al hacer clic del campo idpedido. Este es el código

Private Sub IdPedido_Click()
     Dim rs As Object
     Set rs = Forms!frmPedidos.Form.RecordsetClone.Clone
     rs.FindFirst "[Idpedido] = " & Str(Nz(Screen.ActiveControl, 0))
     Forms!frmPedidos.Form.Bookmark = rs.Bookmark
     DoCmd.Close acForm, Me.Name
End Sub

Se me olvida que hago casi lo mismo pero utilizo un cuadro de lista y un cuadro de texto para buscar es más profesional por ejemplo:

Con este sistema olvídese de cuadros combinados.

Aclaro, le explique de esta forma porque según sus imágenes el formulario productos YA ESTA ABIERTO y desde éste va a buscar, la respuesta que dan es correcta si NO estuviera abierto, pero bueno el usuario es quien toma la decisión.

Es una tontería para los estúpidos que carecen de conocimientos avanzados de VBA, como en algunos casos los usuarios no saben mucho VBA les responde cualquier estupidez. Lamentablemente como mi respuesta requiere de más conocimientos y el usuario no los tiene, que hace, sigue la primera brutalidad que le responde usted, repelente Julián González, respete las respuestas de los demás, si quiere le dicto un curso avanzado de VBA, no debiera estar en Todoexpertos sino en inexpertos. Vuelvo y le digo cada vez que responda respuestas mediocres lo refutaré. Y a propósito deje de iniciar las respuestas con la frase "Hay muchas formas de hacerlo", cuando al menos no hay sino 1 o 2 formas y usted seguro no sabe más formas.

¡Gracias!

Efectivamente no soy una experta y voy aprendiendo y buscando dentro de las muchas respuestas que hay y de ahí hacer pruebas y ver cual se adapta a mis necesidades

Si quiere escríbame a [email protected] y con gusto le suministro el ejemplo con algunas mejoras, favor el asunto hacer referencia a la consulta.

A quien le interese puede solicitar este buscador.

Puede solicitarlo a [email protected], favor indicar en el asunto "Quiero el buscador". Para hacerlo más fácil utiliza una consulta y un formulario y no código SQL que es la otra alternativa lo que hace que sea más rápido. Igualmente, puede modificarse para utilizar un cuadro de lista.

Respuesta
1

Me he liado un poco con las imágenes y los nombres, pero, por ejemplo, podrías poner en el evento Al hacer doble clic en el control Código del formulario BProductos

docmd.openform"productos",,,"codigo=" & me.codigo & "",,acpreview

Me explico, Ábreme en vista diálogo el formulario Productos en aquel registro en que su código sea igual al valor del control código que acabo de "doble cliquear".

De todas formas, personalmente, cambiaría ese cuadro de texto de búsqueda que usas por un combinado, de forma que a medida que fuera escribiendo una cadena del nombre del producto me fuera "limitando" los productos. Por ejemplo, en el combinado escribiría una r, y de momento me mostraría todos los productos que tuviera una r en su nombre. Para refinar más, le añado una v y ya sólo me mostraría aquellos que tuvieran la cadena rv en su nombre, por ejemplo

CeRVeza bien fresquita

Gracias ya lo hace solo una consulta más como le indico que cierre el formulario de bproductos

Para quedar en la pantalla que requiero.

Bastaría con que al código anterior le añadieras una línea al final

Docmd. Close acform,"Bproductos"

Por cierto, lo que te dice el otro "¿experto?" es una solemne tontería

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas