Una forma de hacer una busqueda incremental en un formulario, ingresando un texto en un TextBox y visualizando el resultado en un Grid En este ejemplo de BUSQUEDA INCREMENTAL en un Formulario, debemos poner un TextBox (Text1) y una Grilla (Grid1). En el Entorno de datos insertaremos la tabla (MiTabla) En el método InteractiveChange del TextBox debemos escribir el siguiente código: *--- InteractiveChange --- LOCAL lc, lnRecno SELECT MiTabla lc = ALLT(THIS.VALUE) lnRecno = RECNO() IF MiTabla.Nombre >= lc IF NOT BOF() SKIP -1 ENDIF IF MiTabla.Nombre < lc && debe quedar donde estaba IF lnRecno <= RECC() GO RECNO() ELSE GO BOTT ENDIF RETURN ENDIF IF NOT EMPTY(ORDER()) && busqueda con indice SEEK lc ELSE GO TOP LOCATE REST FOR MiTabla.Nombre=lc WHILE MiTabla.Nombre <= lc NOOPTIMIZE ENDIF ELSE LOCATE REST FOR MiTabla.Nombre=lc WHILE MiTabla.Nombre <= lc NOOPTIMIZE ENDIF IF lnRecno # RECNO() THISFORM.Grid1.SETFOCUS && el nombre del TextBox THISFORM.Text1.SETFOCUS && el nombre del Grid ENDIF RETURN *--- END InteractiveChange --- NOTA: SE DEBE TENER LAS SIGUIENTES CONSIDERACIONES: La tabla debe estar ordenada ASCENDENTEMENTE o existir un indice por Nombre y estar seleccionado (el método busca si hay un SET ORDER establecido) Fijarse bien el nombre del TextBox y del Grid para invocar el método SetFocus (en el ejemplo Grid1 y Text1) Fijarse el alias de la tabla del grid (en el ejemplo MiTabla) Conviene que los nombres estén en mayúsculas y añadir en la propiedad Format del TextBox = ! para que sean ingresados en mayúsculas Conviene que la propiedad del Grid RecordMark = .T. para que se vea el registro marcado, o manejar el color del registro seleccionado