Tendrías que programar una función con los siguiente parámetros:
Function Public: of_DistinctValues
Argumentos : as_table: nombre de la tabla de la Base de Datos
As_column: columna de la Base de Datos
as_where: Where de la consulta Select
As_values: string array, referencia para obtener los distintos valores
Retorna : long - El SQLCode basado en el SQL fetch
Descripción: Retorna distintos valores de una base de Datos
long ll_rc
string ls_sqlstatement
string ls_value
string ls_name
// Consulta SELETC
ls_sqlstatement = "SELECT DISTINCT " + as_column + " FROM " + as_table + " WHERE " + as_column + " = " +as_where
// Ejecutamos SQL
prepare sqlsa from :ls_sqlstatement using this;
describe sqlsa into sqlda;
declare c_values_cursor dynamic cursor for sqlsa;
open dynamic c_values_cursor using descriptor sqlda;
fetch c_values_cursor using descriptor sqlda;
ll_rc = this.SQLCode
// Recuperamos los disctintos valores y los agregamos a un array
do while this.SQLCode = 0
choose case sqlda.OutParmType[1]
case TypeString!
ls_value = GetDynamicString (sqlda, 1)
case TypeDate!
ls_value = String (GetDynamicDate (sqlda, 1))
case TypeTime!
ls_value = String (GetDynamicTime (sqlda, 1))
case TypeDateTime!
ls_value = String (GetDynamicDateTime (sqlda, 1))
case else
ls_value = String (GetDynamicNumber (sqlda, 1))
end choose
as_values[UpperBound(as_values)+1] = ls_value
fetch c_values_cursor using descriptor sqlda;
ll_rc = this.SQLCode
loop
close c_values_cursor;
return ll_rc
Puedes identifica el tipo de dato de la columna del datawindow:
ls_type = dw_1.Describe(as_campo + ".ColType")
1.- Ahora en tu control singleLineEdit crear un evento de usuario con Event ID pbm_keyup o pbm_keydown; evento que se produce cuando el usuario presiona o deja de presionar una tecla en el control.
2.- Capturas el valor de singleLineEdit y llamas a la función of_DistinctValues() enviando los argumentos.
3.- Si es correcto obtienes el valor del array devuelto por la función y lo muestras en el sle seleccionando los caracteres con la función SelectText(start, longitud)