Access - Busqueda registros por formulario

   
Vista:

Busqueda registros por formulario

Publicado por Josep (1 intervención) el 13/02/2012 12:40:41
Hola buenos dias,

Os expongo mi caso:

Tengo una tabla imaginemos con los campos "producto" "categoria" y "color" (son numericos). La idea base es hacer un formulario en el que tenga 3 cuadros de texto (han de ser de texto) que sean de búsqueda sobre una tabla.
Por ejemplo, si quiero buscar el registro que concuerda con "producto=100" y "categoria=245" pues que la persona escriba en el cuadro de texto1 "100" y en el cuadro de texto2 "245" entonces en un subformulario abajo o en un cuadro de lista o algo que quede bien visualmente, aparezcan todos los productos/categoria de diferentes colores que existan (es decir, para cada producto-categoria pueden haber varios pero de diferente color).

No se si me explico.....

Me podeis ayudar? gracias
y un saludo!!!
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

Busqueda registros por formulario

Publicado por angelessebas (208 intervenciones) el 13/02/2012 18:11:18
Hola,

Tengo 3 dudas respecto a tú pregunta:

1º.- ¿Porque quieres que el usuario "escriba" y no "seleccione" una opción, si escribe, por ejemplo, en producto 150 y ese producto no existe en la tabla....?

2º.- ¿Cada producto tiene sus categorias, o son independientes?

3º.- ¿Quieres siempre, elegir producto y categoria y que te salgan los colores...? o ¿quieres elegir aleatoriamente, es decir, categoria y color y que salgan los productos, producto y color y que salgan las categorias....?

Me cuentas, saludos Angeles

Página supuestos y soluciones en access: http://angelessebas.es/
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

Busqueda registros por formulario

Publicado por Josep (2 intervenciones) el 14/02/2012 10:12:28
Hola Angeles, gracias por tu respuesta, te comento:

1- Quiero que "escriba" porque quizás hay unos 2500 registros y como comprenderas, buscar en un cuadrolista o comboBox entre 2500 registros, por muy ordenados que estén, es inviable tanto estética como funcionalmente, o almenos así lo veo yo. Si ese producto no existiera en la tabla pues simplemente que no saliera nada o un mensaje msgbox diciendo que no se ha encontrado.

2- Cada producto es independiente

3- Siempre elegir producto y categoria y que salieran (en caso de que existan) todos los productos-categoria disponibles.

Espero te ayude.
Muchas gracias!

Un saludo,
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

Busqueda registros por formulario

Publicado por angelessebas (208 intervenciones) el 14/02/2012 15:17:01
Hola,

Efectivamente son demasiados registros para un cuadro combinado, lo haremos con cuadros de texto.

A la tabla la llamaré Productos con los campos: producto, categoria y color

Creas un formulario (lo llamaré selProducto) independiente, no lo bases en ninguna tabla ni consulta, en este formulario creas 2 cuadros de texto, uno para el producto y otro para la categoria, a estos cuadros de texto los llamaré txtProducto y txtCategoria respectivamente.

Creas otro formulario basado en la tabla Productos, este formulario (continuo) tendrá los campos producto, categoria y color. Lo llamaré subProductos y lo utilizaremos como subformulario en el 1º que hemos creado (selProducto).

Vamos al formulario principal selProducto e insertas el subformulario subProductos, insertamos un botón (en el formulario selProducto) y en el código de ese botón primero comprobaremos que existe un registro para el producto y la categoria elegidos, si existe, daremos el origen del registro del subformulario desde aquí con las condiciones necesarias, si no existe, que nos mande un mensaje de error.

En las propiedades del botón:

al hacer clic: picas en la flecha de la derecha y eliges Procedimiento de Evento, picas en el cuadrado de los ... para abrir el generador de código y ahí escribimos el código:

If IsNull(DLookup("[Color]","[Productos]","Producto=" & Form!txtProducto.Value & " and Categoria=" & Form!txtCategoria & ""))=False then

' es decir, si la búsqueda (DLookup) en el campo color de la tabla productos que cumpla las condiciones de que el producto sea igual al valor del cuadro de texto txtproducto y que la categoria sea igual al valor del cuadro de texto txtCategoria NO dá falso (IsNull=False) hazme:

Form!selProducto!subProductos.Form.RecordSource="Select Producto, Categoria, Color from Productos where Producto=" & Form!txtProducto.Value & " and Categoria=" & Form!txtCategoria & ""

' es decir, damos el origen del registro (RecordSource) del subformulario subProductos que se encuentra en el formulario selProducto, si el IsNull fuese verdadero, es decir, si no encuentra ningún registro con esas condiciones mandamos un mensaje (MsgBox) de error:

Else

MsgBox "No se encuentra el registro"

End If

Me cuentas, saludos, Angeles

Página supuestos y soluciones en access: http://angelessebas.es/
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

Busqueda registros por formulario

Publicado por Josep (2 intervenciones) el 14/02/2012 15:45:11
Buenas de nuevo!

Pues muchissimas gracias por la ayuda. Esta perfectamente explicado y estructurado y esta misma noche (en caso de que no pueda, será mañana) lo probaré y te cuento pero por lo que he podido leer creo que no voy a tener problemas.

Me ha gustado el detalle de las aclaraciones de los condicionales (lo que hace cada "if..."). Se agradece que se explique que hace cada cosa y no solo limitarse a poner el código que todo y ser de ayuda, con sólo el codigo no pueds aprender. De este modo que tu lo expones ayudas a que podamos aprender y aplicarlo más adelante en otros supuestos semejantes.

De nuevo gracias y felicidades por la página de tu firma, muy intuitiva y de mucha ayuda.
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

Busqueda registros por formulario

Publicado por angelessebas (208 intervenciones) el 14/02/2012 17:32:58
Hola,

Espero que te sirva y resuelvas tú problema.

Por otro lado decirte que... no quiero "regalar" código, el copia/pega ---> pan para hoy y hambre para mañana... lo que intento, a través de mi página y mis comentarios en foros, es enseñar a escribirlo.

Ya me contarás, saludos, Angeles

Página supuestos y soluciones en access: http://angelessebas.es/
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

Busqueda registros por formulario

Publicado por Josep (1 intervención) el 15/02/2012 15:35:27
Ooooppssss!! Error de compilacion. Error en la linea:

If IsNull(DLookup("[Color]","[Productos]","Producto=" & Form!txtProducto.Value & " and Categoria=" & Form!txtCategoria & ""))=False then

Error de sintaxis (3075) falta operador.

Alguna comilla o algo que se haya colado..... haber si lo veo....
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

Busqueda registros por formulario

Publicado por angelessebas (208 intervenciones) el 15/02/2012 17:08:43
Hola,

¿Los campos producto y categoria son numéricos...?

si alguno de ellos es de texto, tendrías que poner '" &.............& "'

por otro lado, mira bien si los campos están bien escritos, por ejemplo, Categoria ¿es con acento o sin acento...?

Me cuentas, saludos, Angeles

Página supuestos y soluciones en access: http://angelessebas.es/
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

Busqueda registros por formulario

Publicado por Juan (1 intervención) el 16/02/2012 11:12:11
Si, los 3 campos son numericos. Vamos a ver tee xpongo la linea que tengo yo con los nombres "reales" de las tablas y campos (Seimpre que pregunto algo pongo nombres de ejemplo, no los reales, vamos a ver si ahora si encontramos el error:

If IsNull(DLookup("[COL]", "[Productos ALMACEN]", "MOD=" & Form!txtMOD.Value & " and CAL=" & Form!txtCAL & "")) = False Then

gracias!!

(no hay acentos en ningun lado)
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

Busqueda registros por formulario

Publicado por angelessebas (208 intervenciones) el 16/02/2012 14:15:03
Hola,

No veo nada "raro" en la linea.

Si me puedes mandar la BD (en access 2003) la echo un vistazo y hablamos sobre ella.

correo@access.angelessebas.es

Saludos, Angeles
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

Busqueda registros por formulario

Publicado por angelessebas (208 intervenciones) el 16/02/2012 18:28:38
Hola,



Al tener un campo con el nombre MOD ¿sabes lo que pasa? pues... que MOD es un operador y access primero mira sus palabras restringuidas, para soluccionarlo pon el campo entre [] de este modo access lo reconoce como nombre de campo y no como una de sus palabras digamos... "propias", pon [MOD] y ... listo.



Por si te interesa MOD te devuelve el resto de dividir 2 números, su sintaxis es: 7 MOD 5 ---> te daria el resto de dividir 7 entre 5



Saludos, Angeles
Página supuestos y soluciones en access: http://angelessebas.es/
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

Busqueda registros por formulario

Publicado por Jesus (2 intervenciones) el 17/07/2012 18:21:37
Hola angeles, he estado leyendo el foro y veo que sabes mucho de acces, como me puedo comunicar contigo para ver como me puedes ayudar con una tabla de datos que tengo, 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

Busqueda registros por formulario

Publicado por kem (3 intervenciones) el 08/10/2015 01:21:40
angeles, necesito de tu ayuda, para un pequeño proyecto de escuela, necesito resolver este dilema:

YO REALIZO LO SIGUENTE EN UN FORMULARIO: busqueda por el nombre o ID de cliente, y cuando lo encuentra, muestra toda la informacion, el detalle esta en lo siguiente:

quiero que al encontrar ese cliente, al mismo tiempo me muestre otros resultados del mismo cliente (de años anteriores) y que me compare tres campos, compare campo año de estudio, campo peso, campo talla, al mismo tiempo que cuando se haga la comparacion del mismo cliente pero con diferente año de registro, me diga un mensaje que el peso del año anterior es mayor al actual, por consiguiente podre saber si esa persona bajo, se mantuvo o subio de peso.

puedes ayudarme con un pequeño codigo VB o macro o expresion!!

agradeceria muchisimo tu aporte
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