Visual Basic para Aplicaciones - Realizar una consulta

Life is soft - evento anual de software empresarial
 
Vista:

Realizar una consulta

Publicado por Ezequiel (3 intervenciones) el 07/11/2007 14:24:54
Hola a todos, me sumo a la duda de pablo, yo tambien quiero realizar una consulta en un textbox de un formulario. Este textbox que menciono al dar enter me abre un MSHFlexgrid con todos los registros de la tabla. El MSHFlexgrid esta compuesto por tres columnas
"Codigo", "Descripcion del articulo" y "Importe", yo lo que quiero es que al ingresar en el textbox la descripcion del articulo me abra el MSHFLEXGRID pero unicamente con los datos de ese articulo. Doy un ejemplo para que se entienda
Ingreso en el text "Cuaderno espiral", entonces deberia abrir el MSHFLEXGRID de esta forma
CODIGO DESCRIPCION DEL ARTICULO IMPORTE
1 Cuaderno espiral 8.75

Este es el resultado que yo quiero, obiamente si hay otros articulos que se llamen cuaderno que aparezcan tambien.
La tabla origen de este MSHFlexGrid se llama articulos (por si precisan el dato) es con ACCESS 97 .
Muchas gracias a todos y espero que alguien si es tan amable me mande un ejemplo completo . Gracias
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

RE:Realizar una consulta

Publicado por doplear (22 intervenciones) el 07/11/2007 23:30:49
En principio por lo que entiendo lo que vas ir haciendo es consultando a la db las coincidencias que ingreses en el textbox, hay dos formas de hacerlo, varian en la forma de manejar el evento
1 Colocando el codigo en el evento KeyDown. y colocando el siguiente codigo

SQLSelect="Select * from articulos where DESCRIPCION_DEL_ARTICULO like '%"& textbox &"%' "

La variable SQLSelect va a tener la consulta. Para este ejemplo asumo que la descripcion del articulo esta en un campo que se llama DESCRIPCION_DEL_ARTICULO. La expresion Like se puede traducir como "Traeme todos los campos de la tabla articulos adonde la descripcion sea similar a...". Los wildcards "%", indican que va a buscar la palabra que pasaste como parametro pero buscando todo lo que contenga ese parametro. Un ejemplo

Si buscas "Cuaderno" Te va a traer todo lo que contenga la palabra cuaderno, este antes o despues de esta palabra. A modo de ejemplo el resultado podia ser algo asi:

DESCRIPCION_DEL_ARTICULO.
"El cuaderno"
"Cuaderno espiral"
"Los cuadernos varios" etc

Las otras variantes que podes usar son %parametro = Acepta cualquier cosa al principio+ la variable.
Parametro% = El parametro+cualquier cosa Ej Parametro= "LA" Resultado "LAPIZ" "LAMINA" etc.

Una ves que esta la consulta lo que tenes que hacer es verificar si te devolvio esto algun resultado, si es asi con un bucle FOR haces la carga

2 La otra forma de manejarlo es dentro del mismo evento KeyDown colocas el codigo SQL descripto arriba pero preguntando If KeyCode = 13 Then Que es lo mismo que preguntar si se presiono la tecla ENTER
Aclaro que en lugar de usar la palabra Like podes usar "=" Te traera como resultado solamente lo que coincida exactamente con la busqueda

Te dejo un ejemplo con un combo es exactamente lo mismo que con el flex, solamente tenes que cambiar las propiedas en el bucle while

Private Sub TXWOSMIN_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Global Conn As New ADODB.Connection 'variable de conexion a la DB
Global RecordSet As New ADODB.RecordSet 'recordset que va a tener los resultados de la consulta

'if se presiona ENTER

If KeyCode = 13 Then
realiza la conexion a la DB

SQLSelect="Select * from articulos where DESCRIPCION_DEL_ARTICULO like '%"& textbox &"%' "

Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\base.mdb"

Conn.Open 'abro la conexion
Conn.Execute (SQLSelect) 'ejecuta la consulta

'creo un recordset para almacenar la consulta
RecordSet.CursorType = adOpenKeyset
RecordSet.LockType = adLockOptimistic
RecordSet.CursorLocation = adUseServer
RecordSet.Open SQLSelect, Conn, adOpenDynamic

'cargo el combo
Do While Not RecordSet.EOF
'campo que recupero
comboList.AddItem (RecordsetCarga.Fields("DESCRIPCION_DEL_ARTICULO "))

RecordSet.MoveNext
Loop

'cerrar la conexion
RecordsetCarga.Close
Set RecordsetCarga = Nothing

Conn.Close
Set Conn = Nothing

end if

end sub

Comentame si te funciono, es importante por si alguien mas tiene la misma duda
Saludos desde Argentina
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