Problema en creación de consulta interactiva y dbgrid en Visual Basic. Base de datos en Access

Hola
Soy alumno a distancia y tengo un problema en la creación de una consulta en visual basic 5, tengo una base de datos echa en access 97 y quiero hacer una consulta interacitva que se muestre en un dbgrid o flexgrid,
Cuando en el cuatro de texto ya presione una tecla en el dbgrid baya apereciendo los caompos registros que coinciden es como la ayuda en windowas escribes a y el muestra los temas por a, as y el muestra as es progresivo
Si me puedes ayudar te lo agradezco
martin

1 Respuesta

Respuesta
1
He encontrado una subrutina para simular lo de la ayuda
en un comboBox. Hay que escribir en ese comboBox y mientras estas
escribiendo aparecen los resultados en el comboBox. La subrutina no
se puede adaptar al dbgrid ya que utiliza funciones api para comboBox.
Lo único que puedes hacer es cargar la tabla en el comboBox, ocultarlo
y enviarle el contenido al comboBox y después recogerlo.
Pt:
En el caso de que modifiques la rutina o encuentres algún error envíamela por favor.
Si tienes alguna duda no dudes en volver a preguntarme.
Código:
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Sub encontrarEntrada(combo As ComboBox, KeyAscii As Integer)
'Funcion que buscar la primera entrada o las siguientes entradas de
'un comboBox simulando la ayuda
'Parametros de entrada:
'Combo: El comboBox
'Keyascii: La tecla pulsada
'Declares:
'Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'Notas:
'Para que funcione hay que llamar a este procediemiento desde el
'evento keypress del combo o introducir un valor de una tecla keyAscii
'(lo mejor es llamarlo desde el evento keypress)
Dim cb As Long
Dim FindString As String
Const CB_ERR = (-1)
Const CB_FINDSTRING = &H14C
If KeyAscii < 32 Or KeyAscii > 127 Then Exit Sub
If combo.SelLength = 0 Then
FindString = combo.text & Chr$(KeyAscii)
Else
FindString = Left$(combo.text, combo.SelStart) & Chr$(KeyAscii)
End If
cb = SendMessage(combo.hwnd, CB_FINDSTRING, -1, ByVal FindString)
If cb <> CB_ERR Then
combo.text = combo.list(cb)
combo.SelStart = Len(FindString)
combo.SelLength = Len(combo.text) - combo.SelStart
KeyAscii = 0
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas