Vamos a actualizar nuestra Política de privacidad próximamente. Te recomendamos consultar el avance.

Aprende VBA para Access

Búsqueda múltiple, usar condiciones SQL en VBA

¡Prueba gratis durante 10 días

nuestros 1290 cursos !

Prueba gratis Mostrar modalidades de suscripción
Veamos ahora un ejemplo muy típico como es hacer un formulario de búsqueda. Si hay algo que siempre hay en una base de datos es un formulario de este tipo en el cual podemos elegir distintos valores para que nos muestre un subformulario, otro formulario o un informe con los valores elegidos.

Transcripción

Vamos a hacer ahora un ejemplo que es muy típico en las bases de datos, que es el hacer búsquedas. Me he traído la tabla de clientes y la tabla de pedidos, de la base de datos de Neptuno. Y he hecho tres formularios: El primero, "Pedidos completos", simplemente, he cogido todos los campos de la tabla de pedidos, y los he puesto dentro de un formulario. He cerrado el formulario y lo he guardado. El de "Pedidos", solamente he puesto los cuatro campos más importantes, y le he dicho que la vista predeterminada es la de "Hoja de Datos". ¿Para qué? Para ahora, en este formulario, en el de" Búsquedas", lo que vamos a hacer es que si buscamos, por ejemplo, por un país, y elegimos el país que nosotros queramos, al decirle "Buscar", me saque los pedidos de ese país. Incluso, si yo hago un doble click en un número de pedido, que me saque sólo ese pedido. Pero, vayamos por partes y vamos a ver cómo podemos hacer este formulario. Aquí, lo primero que he hecho ha sido crearme los cuatro desplegables, para que cojan los datos que nosotros queremos que aparezcan. Entonces, hemos cogido el campo "Idpedido", para que me aparezcan sin duplicados, y le he llamado "elepedido". Y de cliente, lo mismo, le he llamado "elecliente", y le he dicho que estará sin duplicados. Y también al campo "Ciudad" y al campo "País" del destinatario, que les he llamado "elepaís" y "eleciudad". Me he creado un "Subformulario", en el cual le he puesto como origen de datos el formulario de "pedidos". El que hemos creado aquí. En este subformulario le he dicho que no sea visible, porque se mostrará solamente cuando le demos en el botón de "Buscar". Y, por otro lado, aquí en datos, cuando accedemos a las propiedades del formulario, le he puesto, simplemente, un filtro. Le tengo puesto aquí también para que no se nos olvide. Le tengo puesto un filtro cualquiera, pero verdaderamente, me da igual porque este filtro lo voy a cambiar. Pero, si no hay un filtro, no funciona bien. Pero es la primera vez que lo hacemos a la segunda ya sí funciona, en cuanto que hay un filtro. Sí que funciona bien lo que vamos a hacer. Entonces, le ponemos ahí el filtro que queramos, para que después nos funcione bien. Una vez que ya tenemos contados los objetos de origen o sea, los formularios, tal y como los queremos, voy a ir al botón de "Buscar", voy a ir a "Eventos", y vamos a ver lo que hemos hecho ahora. Voy, maximizo la ventana, y vamos ir analizando lo que tenemos aquí. Lo primero que tenemos aquí está comentado es DoCmd.Echo, y que está puesto que sea "False". ¿Qué significa eso? Lo que hacemos aquí es desactivar el refresco de la pantalla. O sea que hasta que no se acabe el código, no me va a mostrar los cambios que hace. Esto "'¡Ojo!", está muy bien cuando ya está el código probado. Pero no lo pongáis hasta que esté el código probado. ¿Por qué? Porque si nos da cualquier error, no llega al final, a donde se vuelve a activar el "Echo". Con lo cual se quedará que yo voy pinchando en distintos objetos de la base de datos, y no me va a actualizar la pantalla. Al final ¿Qué tengo que hacer? Cerrar la base de datos y volver a entrar, para que me funcione bien el "Acces". Entonces, aquí, me creo una variable que se llama "misql", y otra que le llamo "inte". Aunque la llamo "misql" realmente no tenemos que saber "SQL". Lo que vamos a hacer es montar una "condition word", para filtrar el objeto. Entonces, yo le digo: "Inte" igual a cero, y le digo, en el primero, si no es nulo el pedido, o sea, si he cogido un pedido, es que voy a querer filtrar por "idpedido". Entonces le digo que "misql" es igual a "idpedido", o sea, que el campo "idpedido" sea igual a "elepedido" Este "idpedido" es el objeto del subformulario, que después se va a mostrar, y "elepedido" es lo que yo he elegido en el desplegable. Le digo que "Inte" es igual a uno ¿Para qué? Para decirle que ya tengo algo. También pude hacer la comparación con la longitud del texto, de la variable "misql". Por ejemplo, o sea, si es mayor que cero es que ya tiene algo, con lo cual, lo que quiero hacer es concatenar más cosas a continuación. Hay muchas formas de hacer todos los códigos. Y ahora, voy siguiendo en cada caso y le digo: Si no es nulo "elecliente" entonces si "inte" es igual a cero, o sea no hay nada, en la variable de "misql", lo que quiero es que "idcliente" sea igual a lo que hemos elegido en el desplegable de "elecliente". Y si ya tiene algo, pues le tengo que poner adelante un "and". Ahora quiero que nos fijemos en esto: Como "idcliente" es un campo de texto tiene que ir entre comillas. Pero, las comillas no son como las paréntesis. Un paréntesis tiene, por ejemplo, paréntesis de apertura y paréntesis de cierre, las comillas, no. Entonces, para ir alternando unas comillas dentro de otras ¿qué tengo que hacer? Ir poniendo comillas dobles y comillas sencillas. Entonces, aquí lo que haría es que el campo "idcliente" quede igual a "Juan" por ejemplo, y ese "Juan" tiene que ir entre comillas, por eso aquí hay una comilla simple y aquí, otra comilla simple. Esto al principio es un poco de lío, pero la verdad es que es muy necesario a la hora de trabajar con variables de texto. Haremos lo mismo con "eleciudad", para la ciudad del destinatario. Y haremos lo mismo, después, para el país con el campo "elepaís" de búsqueda. Al fin y al cabo, estamos construyendo lo que es una cadena de texto, lo estamos guardando en una variable para después poder filtrar por ella. Cuando llegamos al final, o sea, cuando ya hemos comprobado los cuatro desplegables, yo le digo "si inte es igual a cero", o sea, es que no hemos puesto nada en los desplegables. pues que me salga un cuadro de mensaje en el cual me diga que introduzca los datos que quiero buscar. Pero si no es igual a cero es que hemos introducido algo, entonces, ¿Qué es lo que hago? Lo que le decimos es que nos muestre el subformulario, y dentro del formulario busquedas, que es en el que que estoy, tengo un subformulario que se llama "Pedidos", y lo que quiero hacer es activar la propiedad "Filter", y le digo que es igual a "True". Y después le digo qué filtro es el que quiero, o sea, lo mismo. Lo que quiero poner es, como filtro, esta variable que yo he ido recogiendo y que he llamado "misql". De esta manera voy recogiendo los distintos valores, que ha recogido el usuario en los desplegables. Pero, no sólo esto, ya después, aquí, dentro del subformulario de pedidos, al seleccionar el campo "Idpedido", le he dicho que al dar doble click haga algo. ¿Qué es lo que quiero que haga? Pues, me he creado una variable de tipo "String", o sea de tipo texto, a la cual le he dicho que el campo "idpedido" sea igual a "Me". "Me" hace referencia al formulario en el que está el objeto. Pues se le está ahí diciendo que, dentro de este formulario, tengo un campo "idpedido", o sea, lo que quiero es que "Criterios" guarde ese número de pedido. Y con el objeto "DoCmd", que es el objeto en el que están recogidas todas las operaciones de las macros, le digo "Openform", "Abre un Formulario". ¿Qué formulario quiero abrir? El de "Pedidos completos", entonces, voy poniendo comas hasta que llego a la "Condition word", y le pongo como "Condition word" la variable "Criterios", con lo cual, si lo volvemos a probar todo, vemos que funciona perfectamente. Yo le puedo poner, pues por ejemplo... de Estados Unidos le puedo decir que me busque le puedo hacer un doble click en cualquiera, le puedo poner condiciones en varios campos, o sea, puedo ir haciendo todas las búsquedas que yo necesite. Como digo, este ejemplo es muy típico, o sea, podemos decir que si no es en el 99%, de las bases de datos que se hacen, es porque es al 100% donde hay un formulario parecido a este.

Aprende VBA para Access

Aprende las bases de la programación Visual Basic necesarias para aplicarla en Access y poder crear bases de datos más funcionales de las que el software te ofrece por defecto.

2:07 horas (34 Videos)
Actualmente no hay comentarios.
 

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.