Busqueda
Publicado por Ricardo (37 intervenciones) el 04/05/2007 01:07:13
Buena tarde a todos tengo la siguiente necesidad:
Tengo una DW con un campo llamado nombre_ciudad, necesito que al ir digitando el campo me haga una busqueda, para
esto hice lo siguiente : Declare un evento en el DW que se llama ue_tecla y tiene cono eventID el pbm_dwnkey
en este evento se dispara cada vez que digito una letra (o numero o caracter ) y lo que coloque en
este evento es el sgte cogido:
String l_descripcion, l_nombre_ciudad
//Acepto el dato digitado
This.AcceptText()
//Alamceno el dato digitado
l_nombre_ciudad = This.getitemstring(This.getRow(),"nombre_ciudad")
//Verifico que me ecriban algo
If l_nombre_ciudad <> "" Then
//Altero el dato digitado para la consulta
l_nombre_ciudad = l_nombre_ciudad + "%"
//Hago el select para tomar el nombre mnimo
SELECT MIN(ciudades.nombre_ciudad)
INTO :l_descripcion
FROM ciudades
WHERE ciudades.nombre_ciudad like :l_nombre_ciudad
USING n_cst_application.itr_appl;
//Asigno segun resultado
IF n_cst_application.itr_appl.SQLCode = 100 Then
st_2.text = ""
Else
IF n_cst_application.itr_appl.SQLCode = 0 THEN
st_2.text = l_descripcion
Else
lstr_envia.cadena[1] = "~r~n~r~nProblemas en la base de datos al buscar el consecutivo!. "+&
n_cst_application.itr_appl.SQLErrText
OpenWithParm (w_mensaje, lstr_envia)
End If
End If
End If
Resulta que cuando digito el PRIMER caracter el evento se dispra pero cuando se hace la instruccion getitemstring
" l_nombre_ciudad = This.getitemstring(This.getRow(),"nombre_ciudad") ", no me trae nada;
sin eembargo las siguientes veces el dato que me trae es el primero que digite, es decir, el anterior.
Ahora si entro en modo paso a paso (debugger) y pongo el inicio del debugger en el AcceptText
lo hace correctamente, es decir, lo toma dsde la primera.
Por ejemplo tengo varias ciudades que empienza por "T" como:
TAMESIS
TOLEDO
TOLEMAIDA
TOLIMA
Si digito la "T" deberia tomar "TAMESIS" por ser la minima, si la segunda letra es la "O" debe tomar "TOLEDO"
Tengo una DW con un campo llamado nombre_ciudad, necesito que al ir digitando el campo me haga una busqueda, para
esto hice lo siguiente : Declare un evento en el DW que se llama ue_tecla y tiene cono eventID el pbm_dwnkey
en este evento se dispara cada vez que digito una letra (o numero o caracter ) y lo que coloque en
este evento es el sgte cogido:
String l_descripcion, l_nombre_ciudad
//Acepto el dato digitado
This.AcceptText()
//Alamceno el dato digitado
l_nombre_ciudad = This.getitemstring(This.getRow(),"nombre_ciudad")
//Verifico que me ecriban algo
If l_nombre_ciudad <> "" Then
//Altero el dato digitado para la consulta
l_nombre_ciudad = l_nombre_ciudad + "%"
//Hago el select para tomar el nombre mnimo
SELECT MIN(ciudades.nombre_ciudad)
INTO :l_descripcion
FROM ciudades
WHERE ciudades.nombre_ciudad like :l_nombre_ciudad
USING n_cst_application.itr_appl;
//Asigno segun resultado
IF n_cst_application.itr_appl.SQLCode = 100 Then
st_2.text = ""
Else
IF n_cst_application.itr_appl.SQLCode = 0 THEN
st_2.text = l_descripcion
Else
lstr_envia.cadena[1] = "~r~n~r~nProblemas en la base de datos al buscar el consecutivo!. "+&
n_cst_application.itr_appl.SQLErrText
OpenWithParm (w_mensaje, lstr_envia)
End If
End If
End If
Resulta que cuando digito el PRIMER caracter el evento se dispra pero cuando se hace la instruccion getitemstring
" l_nombre_ciudad = This.getitemstring(This.getRow(),"nombre_ciudad") ", no me trae nada;
sin eembargo las siguientes veces el dato que me trae es el primero que digite, es decir, el anterior.
Ahora si entro en modo paso a paso (debugger) y pongo el inicio del debugger en el AcceptText
lo hace correctamente, es decir, lo toma dsde la primera.
Por ejemplo tengo varias ciudades que empienza por "T" como:
TAMESIS
TOLEDO
TOLEMAIDA
TOLIMA
Si digito la "T" deberia tomar "TAMESIS" por ser la minima, si la segunda letra es la "O" debe tomar "TOLEDO"
Valora esta pregunta


0