Juanbarradas. Gracias por consultar. Espero poder ayudarte.
En
Mi corta experiencia, yo he usado el gestor de datos nativo de foxpro.
Con MySql no tengo mucha practica que digamos. Me disculpo por esto
contigo. :/ Pero... distes en el clavo :) "me traigo los datos desde mysql con una sentencia y los meto en un
cursor para trabajarlos". Si tenes un cursor temporal cargado con los datos, el trabajo se hace posible y mas versátil! :) Vamos a ver...
Mira las formas de hacer búsquedas de datos varían según
la forma y los gustos del cliente, recordemos que las formas dan el ser
a las cosas. :) Tal y como tu planteas tu caso, lo que necesitas es: ir
a un form secundario desde un form principal, buscar (rastrear) un dato
y regresar el resultado al form principal. Esto es posible y fácil de hacer. :) Va así:
Te ilustro de forma sencilla un ejemplo practico que te sirva de base para montar tu aplicación.
Mencionas que creas un cursor. En este caso trabajaremos en base a una
tabla .dbf en el form principal. En el form secundario cargaremos un
cursor temporal con SELECT para hacer la búsqueda. Va así: tenemos una tabla llamada "productos" con los campos: código - (numérico), descripción, unidadmedida, existencia. Tenemos un form PRINCIPAL llamado form1 en donde mostramos todos los campos. Pero queremos un form secundario que permita buscar un producto "POR" por medio del campo código.
Una vez encontrado (en el form secundario), cerrar el form y que al
regresar al PRINCIPAL, los datos que buscamos en el secundario, se vean
en pantalla. Entonces va así:
1. Creamos un form (secundario) TIPO MODAL (esto es importante). En la propiedad name del form lo llamamos "búsqueda". Asegurate que el nombre "físico" del form e tu carpeta sea igual al nombre que asignas en la propiedad name del form.
2. Coloca 2 textos "text1" que servirá para ingresar el código del producto a buscar y otro llamado text2 en donde mostraremos la descripción del producto. Vamos al form en modo de diseño y creamos, en el menu FORM, una new property (propiedad) llamada lretval. Creamos también un nuevo método llamado valorret.
3. En el evento INIT() del form (secundario), creamos un cursor temporal para cargar los datos de la tabla productos.
SELECT * FROM PRODUCTOS INTO CURSOR temp1
4. Creamos un botón "Buscar" y en el evento click asignamos el código siguiente:
SELECT temp1
**--Iniciamos la búsqueda
LOCATE FOR temp1.código = VAL(THISFORM.Text1.Value)
IF FOUND()
**Mostramos la descripción
THISFORM.Text2.Value = temp1.descripción
**Aquí podes cargar el resto de datos si deseas
THISFORM.Refresh
ELSE
MESSAGEBOX("Producto no registrado en el sistema.", 48, "Error")
CANCEL
ENDIF
**--//
5. En el método valorret que creaste, coloca el siguiente código
THISFORM.lretval = temp1.código
THISFORM.Release
**--//
6. En el evento UNLOAD del form, coloca esto:
RETURN THISFORM.lRetVal
**--//
7. Crea un botón llamado "Seleccionar" el cual presionaremos una vez que hayamos encontrado el producto que buscamos. Este "llamara" al evento valorret
THISFORM.valorret
**--//
8. Ahora... vamos el form principal y colocamos un botón "buscar" para hacer el "llamado al form secundario, colocamos este código:
DO FORM "búsqueda.scx" TO lMyRetVal
**--Buscamos en la tabla el valor de código devuelto
IF NOT EMPTY(lMyRetVal)
SELECT productos
LOCATE FOR productos.código = lMyRetVal
IF FOUND()
**--Mostramos los datos de producto en controles
THISFORM.Text1.Value = productos.código
THISFORM.Text2.Value = productos.descripción
**Carga el resto de campos
ELSE
MESSAGEBOX("El producto no esta registrado en el sistema.", 48, "Error")
Cancel
Endif
THISFORM. Refresh
Y listo! Prueba y me avisas! :)
Saludos! :D :D :D
Desde Managua, Nicaragua, Ravenn! :)