Buscar en un datawindow sin presionar enter

Saludos mi problema es este quiero hacer una búsqueda desde un singlelineedit el caso es que lo que quiero es que al momento de ir escribiendo automáticamente me muestre los resultados de la búsqueda por ejemplo:
Si en mi singlelineedit escribo una a en el datawindow me mostraría todos los datos que comiencen con una a y así sucesivamente hata que haya escrito la palabra completa, de antemano gracias por su ayuda.
Atentamente:
Arturo Ibarra

2 respuestas

Respuesta
1
1. Declara un nuevo evento de usuarios para el sle,
por ejemplo ue_buscar: menú declare; user events
y lo asocias al evento pbm_keyup
2. Escribes este escript en el nuevo evento, y listo
al ejecutarlo tienes lo que quieres previo retrieve del dw_1
string ls_busca, ls_columna
integer li_fila, li_largo
ls_busca = trim(sle_1.text)
li_largo=len(ls_busca)
//en este ejemplo la busqueda se hace sobre la columna 1
ls_columna = dw_1.Describe("#1.Name")
//se arma todo el argumento de busqueda
ls_busca = "Mid (" + ls_columna + ",1," + string(li_largo)+ " ) = '" + ls_busca + "'"
li_fila = dw_1.Find (ls_busca, 1, dw_1.rowcount())
IF li_fila > 0 THEN
//si encontro algo con ese argumento.. se va al renglon correspondiente
dw_1.setrow ( li_fila )
dw_1.ScrollToRow ( li_fila )
else
//si no se va al renglon 1
dw_1.setrow ( 1 )
dw_1.ScrollToRow ( 1 )
END IF
Respuesta
1
Haz lo siguiente:
* Primero: Crea un evento en el singlelineedit, por ejemplo: ue_presiona(), y en el Event ID: selecciona pbm_keyup, luego dentro de este evento escribe lo siguiente: uo_busca()
* Segundo: Crea la función uo_busca()
dentro de esta función coloca el siguiente script:
long longi,ll_foundrow
longi = len(sle_1.text)
String cadena
cadena = "apellido LIKE '"+sle_1.text+"%'"
ll_foundrow = dw_1.Find(cadena,1, dw_1.RowCount())
IF ll_foundrow > 0 THEN
dw_1.Selectrow( 0, False)
dw_1.ScrollToRow(ll_foundrow)
dw_1.SelectRow( ll_foundrow, TRUE)
sle_1.TextColor = 0
sle_1.SetFocus()
ELSE
sle_1.TextColor = 255
END IF
Cualquier consulta solo pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas