Como hacer un formulario de Busquedad

gOYO
09 de Enero del 2004
Necesito saber cual es la tecnica mas facil para diseña a mi programa una ventana que permita realizar una busqueda de datos y traelo al formulario principal para este asi realizar una accion con los datos encontrados

sgomez
09 de Enero del 2004
Hay tantas formas como imaginacion tenga el programador.
Pero si son pocos datos, se me ocurre usar dos formularios (para que no toquen por cualquier lado). Llamás al formulario de busqueda de la siguiente manera:

do form formulariodebusqueda to datodevuelto

En el unload del form de busqueda ponés:

return variableconeldato

*donde variableconeldato es una variable o propiedad del formuario que contiene el dato necesario

Entonces en el formulario principal tenés el datos devuelto en la variable "datodevuelto".

Si son muchos datos, en el formulario de busqueda podés crear un cursor en un area de trabajo que no se "pise" con las del otro formulario y cuando cerrás el formulario de busqueda el cursor queda abierto.

Espero haber sido lo suficientemente claro y que te se sirva de ayuda.

ferherpe
09 de Enero del 2004
Otra forma de realizar una busqueda dentro de un formulario.
Usando un cmdbotton de busqueda dentro del formulario al cual le añades el siguiente codigo:

IF BOF()
WAIT windows ('NO HAY REGISTROS CAPTURADOS....')
ELSE
DEFINE WINDOW wBrowse FROM 1,1 TO 15,65
move WINDOW wBrowse center
on key label rightmouse keyboard chr(23)
browse WINDOW wBrowse FIELDS ampo1, campo2, campo3, campo4 NOEDIT NOAPPEND NODELETE
if lastkey()=27
a=recno()
go a
endif
on key label rightmouse
RELEASE WINDOW wBrowse
Editando = .t.
thisform.text1.Value=tabla.campo1
thisform.text2..Value=tablal.campo2
thisform.text3.Value=tabla.campo3
thisform.text4.value .......
endif
thisform.show

Este codigo aunque rudimentario es muy efectivo cuando buscas en tablas no muy grandes, ya que te permite seleccionar y halar automaticamente la informacion al formulario ya sea pulsando <esc> o el boton derecho del mouse sin necesidad de abrir otro formulario.
Si la tabla es muy grandes, el codigo del cmdbotton antes mencionado, seria similar con la variante de usar un
set near on
locate for .......
define window wbrowse ....
.............. etc
Espero que lo anterior te sirva
Saludos
Fernando