Fijate que tengo est ejemplo haber si le entiendes
** en un procedimiento que llamo buscar
LOCAL cCodigo,nCodigo
DO FORM busqueda WITH "fase","fase.codigo","fase.nombre" TO cCodigo &&El valor que trae de regreso
fase &&la tabla
fase.codigo &&el campo codigo
fase.nombre &&el nombre nombre
SELECT fase
IF !EMPTY(cCodigo) then
SEEK(cCodigo)
if !found() then
mensaje("codigo no encontrado")
else
thisform.carga_datos()
endif
ENDIF
** y en tu formulario busqueda el evento INIT
lParameter cTabla, cCodigo, cNombre
LOCAL sConsulta
Mybarra.desactiva_boton
thisform.codigo = cCodigo
thisform.nombre = cNombre
thisform.tabla = cTabla
** Se obtienen los valores de la tabla a mostrar
sConsulta ="SELECT "+cCodigo+" As codigo, "+cNombre+" FROM " +cTabla+ " INTO CURSOR busqueda"
** se asignan los valores al Grid
ThisForm.grdBusqueda.RecordSource = sConsulta
ThisForm.grdBusqueda.column1.width = 75
ThisForm.grdBusqueda.column2.width = 379
thisform.refresh
** En el evento un load
IF USED("busqueda")
SELECT busqueda
USE in busqueda
ENDIF
RETURN thisform.valor
** por su puesto que tienes que hacer el formulario y el formulario tiene un grid... Tu entiendes..
suerte