Wednesday, January 17, 2007

Busqueda en una base de datos con Visual Basic

Resultado de un proyecto de la escuela tuve ke darle a programar a Visual Basic 6. Es un lenguaje muy facil de usar, es visual y me pasa un monton la forma de programar en el. La aplicación ke realizé fuen en relacion con una base de datos. Para no entrar en mas detalles aki lo ke kiero compartir.

Bien, este código realiza una busqueda en una tabla de una base de datos. El query contien SQL, o ke, hay otra forma mas facil?, jajaja. Es todo un estandar SQL y es muy muy facil de usar. La busqueda se realizará al introducir letra a letra en un textbox por ejemplo.

1. Dentro del textbox, en un evento change para ke en cada letra realice una busqueda en la tabla con base en la palabra formada del textbox. Iniciamos un MSFlexGrid por ejemplo.

MSFlexGrid1.TextMatrix(0, 0) = "Clave"
MSFlexGrid1.TextMatrix(0, 1) = "Nombre"
MSFlexGrid1.Rows = 2

2. Iniciamos una variable local 'fila' que llevara el aumento de los Rows del grid, al mismo tiempo usamos una variable 'RecSet' de tipo ADODB.Recordset, la cual recorrera los registros en nuestra tabla. La variable 'sql' es un string ke será igual a lo ke tenga nuestro textbox

fila = 0
With RecSet
sql = txtNomAut.Text

3. La consulta sql la realiza el RecSet, en donde 'db' es la conexion a nuestra base de datos, la cual previamente ya esta apuntando a nuestra base. La primera validación mostrara el msgbox si no encuentra un registro con lo ke tiene la base.

RecSet.Open "SELECT * FROM Autor", db, adOpenDynamic, adLockBatchOptimistic
If (RecSet.BOF And RecSet.EOF) Or sql = "" Then
MsgBox "No hay registros para mostrar", vbInformation
RecSet.Close
Exit Sub

4. Si el query se realiza, el recordset se mueve a la primera posicion. Despues realizará otro query donde el parametro SQL LIKE es el importante para encontrar los registrs similares a lo ke tiene la variable SQL. Lo ke sigue es mostrar los datos, en este caso el grid. Y por ultimo realiza la busqueda nuevamente en un ciclo Do While. Cerramos la conexion con el .Close en el RecSet y listo, la consulta debe funcionar.

Else
RecSet.MoveFirst
RecSet.Find "NomAut LIKE '*" & sql & "*'"
Do While Not RecSet.EOF
fila = fila + 1
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
MSFlexGrid1.TextMatrix(fila, 0) = RecSet.Fields("IdAut")
MSFlexGrid1.TextMatrix(fila, 1) = RecSet.Fields("NomAut")
RecSet.Find "NomAut LIKE '*" & sql & "*'", 1
Loop
End If
RecSet.Close
End With

Si kieres utilizar este codigo solo copia y pega todas las lineas de código aki mostradas, juntas te daran los resultados en el visual basic. Cualkier duda en los comments y con gusto ayudare.

2 Comments:

Blogger Christian Gutierrez Leal said...

Disculpa me Sale el siguiente error

El proveedor actual no admite la interfaz necesaria para la funcionalidad Buscar

Si me pudieras ayudar a solucionarlo

11:22 AM  
Blogger Tri-Edge said...

Gracias, tu programa es justo lo que estaba buscando. Solo que tengo problemas para identificar donde va cada parte de codigo en que evento/elemento.

¿Podrías enviarme tu programa en VB a mi correo, o bien subirlo a tu pagina, porfavor?

Mis correos:

x_laws00@yahoo.com
Tri.Edge.Azure.Kite@gmail.com

De antemano, Gracias.

2:52 PM  

Post a Comment

<< Home