por Antoni » 08 Ene 2012 15:44
Hola.
En el adjunto encontrarás el formulario de consulta y actualización resuelto.
Existen dos formas de trabajar con él:
En modo Consulta y en modo Edición elegibles desde un combobox añadido a tal efecto.
También observarás dos nuevos listbox, uno te permite escoger la forma de búsqueda y el otro te permite escoger por que columna se va a buscar.
He añadido un nuevo botón "Limpiar" que borra el contenido de los textbox.
El botón de "Buscar por código" ya no tiene sentido porqué se puede buscar por cualquier columna, por lo que lo he utilizado para restaurar la lista a su totalidad después de hacer una consulta.
Verás que dicho botón junto con el de "Buscar" los he cambiado de ubicación.
Hasta aquí la parte funcional, ahora vamos por la parte técnica.
Le he cambiado el nombre a los textos y etiquetas de la siguiente manera:
Etiquetas: xLabeln .En las etiquetas se cargan los títulos de la fila 1 de la base de datos
Textos: xTextBoxn
Siendo n= Nº de columna de la base de datos.
¿ Que se persigue con este cambio ? Saber a que elemento de la colección Controls debe asociarse una columna en concreto de la base de datos.
Gracias a esto tratamos los controles como arrays y conseguimos un notable ahorro de escritura de código, además de facilitar su seguimiento.
Con todo esto no hemos hablado ni un solo momento del motivo de la consulta.
Tal como comenté, un listbox solo admite 10 columnas salvo que se utilice, entre otros, la propiedad .RowSource.
Esta propiedad permite asociar un rango a un listbox con independencia del número de columnas, pero, siempre hay un pero, las celdas de dicho rango no pueden ser modificadas mientras exista la asociación entre el rango y el listbox.
Por dicho motivo, antes de modificar, eliminar, incluir cualquier dato es necesario deshacer esa asignación y reasignarla de nuevo después de haber realizado la variación de datos.
Dado que dicho rango ha de ser forzosamente consecutivo, es decir no puede contener ni filas ni columnas entre medio, se ha hecho necesario utilizar una hoja de trabajo para poder realizar el proceso de consulta. La hoja se borra al terminar el formulario.
Dicha hoja es la "Hoja2", esta hoja debe existir siempre y no puede ser usada para nada mas.
El formulario tal como está es válido para cualquier hoja que tenga un máximo de 16 columnas.
La fila 1 es la fila de títulos, y los datos deben empezar en la fila 2. La columna 1 se reserva para un numerador que se asigna de forma automática al añadir un nuevo registro.
Ya contarás como te ha ido.
Saludos
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.