FoxPro/Visual FoxPro - problemas con boton buscar

 
Vista:

problemas con boton buscar

Publicado por Elsa (1 intervención) el 03/09/2009 23:05:31
Estoy haciendo un formulario y en los textbox tengo como controlsource variables de memoria.
Tengo que hacer los botones primero, siguiente,buscar,etc.
Por ejemplo, en el primero puse :GO TOP,scatter memvar., thisform.refresh()

En el boton buscar puse el siguiente codigo que lo saque del boton buscar de la clase txtbtns :
Que instrucciones le debo agregar al final para que funcione bien ?.
Le agregue scatter memvar, me busca el registro y queda como si la tabla tuviese un solo registro.A la instruccion NavRefresh(), le puse comentarios, porque no estoy usando esa clase y necesita hacer algo para no perder la tabla. En la memoria solo queda el registro o los registros encontrados.
De que otra manera puedo hacerlo ?.
Donde puedo encontrar un ejemplo sencillo de un formulario que en los controlsource tenga variables de memoria? y el codigo de los botones para recorrer y buscar en la tabla?.
Tenia el formulario hecho con el asistente, controlsource campos de la base, pero no funciona bien. Si recorro los campos con la tecla tab, se cuelga.
Muchas Gracias
Elsa

LOCAL oSearchDlog
LOCAL lVisChange,lStateChange

IF EMPTY(ALIAS())
RETURN
ENDIF

* Check if SDI Window
IF THISFORM.ShowWindow = 2
IF !_VFP.Visible
_VFP.Visible = .T.
lVisChange = .T.
ENDIF
IF _SCREEN.WindowState = 1
_SCREEN.WindowState = 0
lStateChange = .T.
ENDIF
ENDIF

oSearchDlog = CREATE("searchform")
oSearchDlog.SHOW()

IF m.lVisChange
_VFP.Visible = .F.
ENDIF
IF m.lStateChange
_SCREEN.WindowState = 1
ENDIF

IF THISFORM.ShowWindow = 2
Activate Window (THISFORM.Name)
ENDIF
select tabla
scatter memvar
* Reset from prior
*THIS.Parent.TopFile = .F.
*THIS.Parent.EndFile = .F.
*THIS.Parent.NavRefresh()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problemas con boton buscar

Publicado por xx (378 intervenciones) el 04/09/2009 16:32:55
Les dejo una idea, podrian plantear de la sgte manera

CLIENTE
*CODIGO *NOMBRE *RUCCI DIRECCION TELEFONO etc
Crean un formulario con todos estos campos con un control TEXT1 adedecuado para cada campo, al inicializar el formulario todos los campos estan deshabilitados, crean un metodo ACTUALIZAR que lo que haces es tomar datos de la posicion del registro para saber que boton de navegacion, modificacion y/o busqueda debe estar activado y que no
y tambien copia los valores de los campos en los cada TEXT correspondiente (con THISFORM.TEXT1.VALUE=CLIENTE.CODIGO etc), se supone que si estoy en el registro final no debo habilitar mis botones de SIGUIENTE ni tampoco IR AL FINAL, y si estoy en el primer registro no debo habilitar mis botones ANTERIOR o INICIO, y si la tabla no tiene registros no debo habilitar mis botones de navegacion, ni MODIFICAR pero si AGREGAR.
Eso pueden verlo al momento de depurar el formulario.
El boton MODIFICAR lo que deberia hacer es solo habilitar los controles para editar los valores que tiene y con otro boton grabarlos en la tabla yo por ejemplo mi boton nuevo cumple la funcion de grabar cuando previamente se pulso MODIFICAR y debe existir otro CANCELAR en caso que el usuario no quiera grabarlo.
El boton BUSCAR lo que hace es habilitar uno de los campos indexados CODIGO NOMBRE o RUCCI que esta indexados de acuerdo al orden de navegacion establecido al cargar el formulario y con un boton LOCALIZAR se busca la clave ingresada en uno de esos campos.

Espero haber ayudado y no embarrado mas las cosas.
Solo nuestra imaginacion nos limita las cosas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problemas con boton buscar

Publicado por Mauricio (1541 intervenciones) el 05/09/2009 15:18:29
Elsa, los botones de navegacion son para eso mismo, no se si tienes una tecla en donde puedas usar TAB?
Ahora, como quieres que te funcionen los botones de navegacion si en el controlsource tienes variables de Memoria???????????????????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con boton buscar

Publicado por Para Mauricio (36 intervenciones) el 07/09/2009 20:08:55
Como estoy usando variables de memoria, tengo que programar los botones, primero, siguiente, etc.
y no se como progrmar el boton buscar, usando el codigo de searchform.
Gracias
Elsa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problemas con boton buscar

Publicado por Gabriel (427 intervenciones) el 14/09/2009 05:12:28
Amiga Elsa :

No se si llegastes a resolver tu problema con la opcion de Busqueda en un formulario. Te comento que yo tambien cuando empeze hace algunos años hice lo mismo que tu en copiar y utilizar los codigos de las clases como ejemplo que trae el VFP pero que al final no me ayudaron de mucho por lo avanzado y talvez algo compleja de su elaboracion. Lo cierto es que tuve que recurrir a algunos foros y recogiendo las ideas y comentarios de algunos colegas experimentados pude al final elaborar mi propio codigo que vengo utilizando en mis proyectos...

Aqui te explico los pasos basicos a seguir :
1.- En el formulario principal en la opcion buscar del evento Click deberas de llamar a tu formulario de Busqueda

Ej.- DO FORM "C:CONTROLAPLICACIONBUSCAR_PRES"

El siguiente codigo posicionara el registro de la busqueda que hayas realizado
para ello la tabla que utilices debera estar indexada por uno o mas campos...

Ej.-

SELECT 1
Use PRESTADO Index PRESTAS
WAIT WINDOW "Orden Encontrado..." TIMEOUT .5
GOTO ElReg
SCATTER MEMVAR
Thisform.Refresh

2 ) Deberas de crear un formulario secundario en donde ingesaras los datos que serviran para realizar la busqueda, en mi caso utilizo 2 campos de busqueda...
A continuacion te expongo el codigo que utilizo, te dejo como tarea la validacion previa de cada campo.

Ej.-

SELECT 1
Use PRESTADO Index PRESTAS
SEEK Thisform.COMBOYEAR.DisplayValue + STR(Thisform.TEXT2.Value,6,0)
IF FOUND()
WAIT WINDOW "Orden Registrada." TIMEOUT 1
ElReg = RECNO()
RETURN .T.
ELSE
WAIT WINDOW "Número de Orden No Registrado" TIMEOUT 1
ENDIF

Bueno he tratado de ser bien didactico, espero que te sirva de mucha ayuda para resolver tu inquietud...

Saludos,

Gabriel
(Lima-Perú)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar