Access - formulario de búsqueda, en donde, tras seleccionar el producto muestra los registros de ese producto

 
Vista:
Imágen de perfil de Antonio

formulario de búsqueda, en donde, tras seleccionar el producto muestra los registros de ese producto

Publicado por Antonio (3 intervenciones) el 02/06/2016 20:06:44
Hola a todos; ruego ayuda para solucionar un problema;el problema que tengo es grave, pues si no lo soluciono, puedo perder el empleo, tengo una base de datos dedicada a las piedras preciosas, con varias tablas (Producto, Clientes, Proveedores, compras y ventas) en la primera tabla tengo los campos de : producto (con 27 categorias), tipo (con 3 categorias) peso (con infinidad de categorias pues los quilates van de décima en décima), y así hasta completar todas las características, como son tamaño, tratamiento, claridad, lustre, origen, etc).
El problema es que quiero hacer un formulario de búsqueda, en donde, tras seleccionar el producto (ruby, esmeralda, tanzanita, etc) me muestre en un cuadro de lista todos los registros de ese producto, dicho cuadro de lista debería estar integrado por los campos ID_, PRODUCTO, PESO, TAMAÑO, COLOR Y Nº DE PRODUCTO y después, en un cuadro de texto, ingrese el peso de la piedra que estoy buscando y me de el resultado correspondiente. Asimismo, al pinchar sobre dicho resultado, me abra el formulario de productos mostrandome el registro con todos sus datos.
La verdad es que me estoy volviendo loco con este asunto, y ya no se a quien acudir, he mirado posibles soluciones por internet, pero ninguna me funciona.
Por favor, échadme una mano, os estaré profundamente agradecido. Si necesitais cualquier otra información o dato, me lo podeis pedir, ya sea por aquí o a través del correo electrónico para que lo pueda enviar.
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
sin imagen de perfil

formulario de búsqueda, en donde, tras seleccionar el producto muestra los registros de ese producto

Publicado por Enrique Heliodoro (1664 intervenciones) el 02/06/2016 22:30:43
Para ese tipo de localizaciones se suele utilizar la tecnica de 'combos encadenados' de la que hay abundante informacion en la nube.

Pero lo que no me queda claro es lo de 'tengo' cuando parece que aun no se ha resuelto lo primordial: una correcta gestion de los datos ¿hay alguna planificacion previa que pueda servir de guia para llegar a algun final util?
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

formulario de búsqueda, en donde, tras seleccionar el producto muestra los registros de ese producto

Publicado por Antonio (3 intervenciones) el 03/06/2016 01:02:42
Vamos a ver, soy bastante profano en la materia sr. Enrique, pero trataré de explicarme: no puedo utilizar la tecnica de combos, pues si hago un combo de tipo de producto, aparece una lista de 27; hasta ahí bien, pero si hago un combo del peso del producto, la lista puede ser interminable, pues puede empezar con 0,10 ct, y llegar a 500,00 ct, aumentando cada valor por centésimas, es decir puede haber valores de 0,10; 0,11; 0,12; y así hasta llegar a 500,00, además esos valores pueden estar repetidos en virtud del tipo de producto, o incluso dentro del mismo producto (por ejemplo, puede haber 5 esmeraldas con el mismo peso, pero con diferentes medidas o diferente claridad o diferente tratamiento) es decir que podrían ser multiplicados por 27 0 más. En cuanto a la correcta gestión de los datos, no sé exactamente que quiere decir, como ya expliqué en mi primer comunicado, hay varias tablas, (productos, clientes, proveedores, compras y ventas), todas ellas relacionadas entre si. Lo que trato de hacer, para ahorrar tiempo, es un buscador que por ejemplo, cuando seleccione en un combo el producto "ruby", me filtre todos los rubíes de la base de datos, en un cuadro de lista, y que, posteriormente, y en un cuadro de texto le pueda indicar el valor (en este caso el peso), y me aparezcan todos los rubíes que tengan el mismo peso, y a partir de ahí, al hacer doble click en el registro seleccionado, abra el formulario de productos con dicho registro a la vista. En cuanto a la planificación, por supuesto que la hubo, pero que tendrá que ver esa planificación para poder crear un formulario de búsqueda basado en una sola tabla, pues creo que hay o no planificación de la base de datos, se puede crear un formulario de búsqueda sobre una sola tabla contenga mas o menos campos.
Agradezco de corazón el interés, pero estoy buscando una solución practica que consiga resolver el problema, pues ¿se imagina tener que buscar un registro concreto, buscando de uno en uno entre 1.350.000 registros?.
Como ya dije antes, soy bastante profano en la materia, pero hasta ahora todo ha funcionado correctamente, el problema me surge al tratar de hacer el formulario de busqueda. ¿como puedo hacerlo?. Gracias
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
sin imagen de perfil

formulario de búsqueda, en donde, tras seleccionar el producto muestra los registros de ese producto

Publicado por Enrique Heliodoro (1664 intervenciones) el 03/06/2016 02:41:55
Si no existe un patrón de búsqueda concreto, la opción que brinda Access (supongo que aun existe) es 'filtrar por formulario', que se aproximaría bastante a lo que se intenta.

La alternativa es crear un filtro en tiempo de ejecución, esto es:
.- se tienen tantos cuadros de texto como peculiaridades a filtrar
.- se aportan los datos en los apartados correctos (familia, tipo, peso ... depende de los datos y se conocen de forma genérica)

Una vez que se considera que son suficientes (o son los que se conocen) se le daría la orden de buscar (un click en un botón es valido)

Aquí comienza la parte del programador, pues ha de recorrer los cuadros de texto y (descartando los que carezcan de datos) generar un filtro que se aplicaría para obtener el subconjunto deseado.

El método es simple:
Se parte del supuesto de que se conocen los campos del formulario (si se desconocen ... )

Se dimensiona una variable de texto (que recogerá la información ya tratada) llamémosla 'MiFiltro'

El primer campo:
If Not IsNull(aquí el campo) Then MiFiltro = "[nombre del campo] = " & [aquí el campo]

El segundo y siguientes:
If Not IsNull(aquí otro campo) Then
' se verifica si ha contenido en la variable de acumulación
If Len(MiFIltro) <>0 Then MiFiltro = MiFiltro & " And "
'se le añade la siguiente condición
MiFiltro = MiFiltro & "[nombre del campo] = " & [aquí el campo]
End If

.....
Otra validación
Otra validación
......

Al final en 'MiFiltro habrá un contenido que podría parecerse a:

Tipo = 'Esmeralda' And Color = 234 And Peso = 10.88 And .......

Solo queda el aplicarlo al origen de datos (verificando que en la variable 'hay algo')

Me.Filter = MiFiltro
Me.FilterOn = Len(MiFIltro)

Si la longitud de 'MiFiltro' es un cero , NO SE APLICARA el filtro (el cero equivale a False), en cualquier otro caso sera considerado un TRUE y aparecerá la información filtrada

Que después se afine el filtro o que se utilice algún método para que se abra uno seleccionado en ese subconjunto es otra historia (de la cual 'también abunda la información' publicada en la Nube)

Solo un consejo:
Al generar el filtro, se ha de tener un cuidado exquisito en aplicar el formato correcto según el tipo de dato y mas exquisito con los números y fechas, en VBA se utiliza el formato americano para ambos.
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

formulario de búsqueda, en donde, tras seleccionar el producto muestra los registros de ese producto

Publicado por Antonio (3 intervenciones) el 05/06/2016 00:27:51
Muchas gracias sr. Enrique por su explicación, creo que ha sido muy clara, pero el problema, realmente soy yo, pues como ya he indicado, estoy muy verde en el mundo de Access, ni siquiera se lo que es crear un filtro en tiempo de ejecución, pero lo intentaré, a ver si consigo resultados.
De nuevo le doy las gracias por su tiempo, su esfuerzo y su respuesta
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