25 marzo 2007

ADO 4 - El regreso de las consultas (2)

Ya me puse a chambear para hacer otra consulta leve. Con el mensaje anterior echamos relajo con una consulta que se llama para llenar un ComboBox con un campo de los registros de una tabla. Ahora, siguiendo con el programa para doña Amalia, voy a hacer una consulta y llenaré una ventana con los datos de un proveedor.

Bien, el proyecto, todavía en fase muy lejos de ser la final, que incluye lo que voy a explicar hasta ahorita lo puedes bajar aquí. Voy a ir explicando los pequeños cambios que hice poco a poco, con código y toda la cosa, para que entiendas mejor el código.

Bueno, como estamos continuando con el proyecto de doña Amalia, voy a explicar ahora los pequeños cambios que realicé. Como recordarás del mensaje anterior, ya teníamos una ventana que nos permite consultar por número de proveedor o por nombre del proveedor. Ahora voy a programar el botón Mostrar, que yo lo llamé btnMostrar, para que abra una ventana nueva, frmDatosProveed, con puras etiquetas para mostrar los datos del proveedor. Podría haber usado la misma ventana de los proveedores para la consulta pero, sería mucho relajo porque debería deshabilitar el botón de Altas (ni modo que le piquen, por error o maldad, el botón de Altas para insertar un registro que ya existe).

También decidí cambiar el botón Eliminar a la ventana con los datos del proveedor. Así, primero aseguro que el usuario vea los datos del proveedor antes de matarlo, perdón, quise decir eliminarlo.

Bueno, por lo pronto aquí va el código que llena la ventana frmDatosProveed con la información del proveedor elegido, ya sea por nombre o número. Sin más preámbulos (porque abajo describo y explico el código), ahi va...


Tal vez parezca mucho rollo complicado, pero no es así. En realidad es muy sencillo. Comienzo revisando las opciones: si seleccionó la primera opción, la de buscar por número de proveedor (optNoProveed) y el número que tecleó es correcto (para esto uso la función Val que me convierte una cadena a un número). En caso que esto sea cierto, llena la propiedad CommandText con la instrucción SQL que busca todos los registros que sean igual al número escrito por el usuario: SELECT * FROM Proveedor WHERE NoProveed=" & txtNo.

Si esto no se cumple, o sea, que seleccionó optNoProveed y no escribió un valor válido para el número de proveedor, le mando un mensaje de error, pongo el cursor en txtNo para que escriba un valor válido y me excito de la función (se oye feo, pero digo que me excito porque estoy usando el Exit).

Si ninguno de los anteriores se cumple, quiere decir que seleccionó optNombre y no tengo que revisar el valor porque es un Dropdown List (o sea que no deja que el usuario escriba algo que no venga en la lista) y lo inicialicé seleccionando el primer proveedor de la lista (si tienes dudas de cómo hacerlo, lee mi mensaje anterior). Entonces lo que hago es igualar a cmdCommand.CommandText a la instrucción SQL que regresa todos los campos del registro cuyo nombre es igual a lo que está en cboNombres (eso lo saco con el cboNombres.List(cboNombres.ListIndex)).

Una vez que ya asigné el comando SQL correcto, paso a abrir el RecordSet (tblTable) que tendrá el registro que ando buscando. Esto lo hago con el tblTable.Open que ya expliqué previamente.

Si la tabla no llegó al final del archivo, lo que debería suceder siempre, cargo a la memoria una nueva forma que hice para mostrar datos, llamado frmDatosProveed. Esto lo hago con la instrucción Load frmDatosProveed. Una vea hecho esto, frmDatosProveed ya existe en la memoria, pero el usuario todavía no lo ve. Entonces lleno las etiquetas (lblNo, lblNombre, lblWeb, lblFax, lblTel y lblIMeil) con los valores de los campos del registro encontrado (tblTable!NoProveed, tblTable!Nombre, etc.). Al terminar de llenar las etiquetas, dejo que el usuario vea la ventana (usando el método Show) y todo es felicidad.

Si de pura casualidad al abrir la tabla llega luego luego al final (tblTable.EOF), (por ejemplo, si el número de proveedor no existe) quiere decir que no pudo encontrar al registro y le mando un mensaje de error.

Para terminar, cierro la tabla para poder usarla de nuevo en cualquier otro lado del programa.

Pero, ¿cómo se ve esta ventanita chuvidubis llamada vulgarmente como frmDatosProveed? Así se ve en la vista diseño:


Y así se ve a la hora de ejecutar el programa:


Ese fue la función más trabajosa, bueno la que hace todo el trabajo. Solo nos resta cerrar la ventana. Esto lo hago en la función btnAceptar con este código que se ejecuta cuando hacen click sobre el botón:


Tal vez ese sea el código más complicado de esta etapa. Ahora, ¿qué sigue? Probablemente programaré el botón de Eliminar (btnEliminar), pero ya veremos luego. ¡Hasta la próxima!

2 comentarios:

Anónimo dijo...

hola tony, soy commer, ya casi tengo el programa completo, pero tengo un error en el command para eliminar los registros cuando me muesta los datos, le puse un codigo que escribiste en el pizarron, peor no funciona, dice que los datos no coinciden, qeuria saber sino podrias agrgar una entrada ADO5 para saber cual es el problema grax tony, felices vacas

marisol dijo...

me acabé de chipar con el botón eliminar, una ayudita porfa!!!

El Tony y sus ondas...

Related Posts Plugin for WordPress, Blogger...