Dudas al realizar búsquedas utilizando botones de un form en Visual Fox Pro

Tengo un form donde realizo la busqueda de clientes por codigo y por dni, tengo 2 botones 1 para cada caso. Realizo la busqueda y muestro la informacion correspondiente. Hasta hay todo perfecto en la busqueda y actualizacion de datos etc. El problema esta al realizar busquedas alternas, Ej: se el codigo de 1 cliente y el dni de otro, busco por codigo del primero, me muestra la informacion correspondiente, paso siguiente ingreso el dni del segundo y quiero realizar la busqueda y no obtengo nada :S
IF thisform.pageframe1.page2.txtCodigo.Text <> ' '
IF thisform.pageframe1.page2.txtDni.Text <> ' '
Con ese código comienzan los click de cada botón, con el debuguer veo que los text existen o sea tienen información, pero si realizo la consulta con el debuguer thisform.pageframe1.page2.txtDni.Text <> ' '
Me dice que es falso, no comprendo porque tiene ese problema fox

1 respuesta

Respuesta
1
Para poder analizar correctamente tu problema neceitaría el código completo de los dos botones buscar, pero sospecho que tu problema puede ser simple y voy a arriesgar una respuesta a tu problema.
Si haces una búsqueda alternada, es decir una vez por dni, y luego por código, es probable que los controles txtcodigo y txtdni no se hayan limpiado luego de finalizada la primera búsqueda.
Cuando tu form. Se inicializa los dos controles están en blanco, por lo tanto se cumple la condición IF thisform. Pageframe1. Page2.txtCodigo.Text <> ' ', pero al finalizar la búsqueda debes volver a poner en blanco los valores de los dos controles.
Creo que con ello será suficiente para resolver tu problema.
Realizo la limpieza si no encuentro el usuario, intente limpiar el "otro" campo pero sigo con el problema
Para el Click de búsqueda por código
IF thisform.pageframe1.page2.txtCodigo.Text <> ' '
*Borro el otro campo
thisform.pageframe1.page2.txtDni.Value=''
SELECT clientes
SET ORDER TO CODIGO   && CODIGO
SEEK (VAL(thisform.pageframe1.page2.txtCodigo.Text))
IF FOUND()
Para el Click de busqueda por DNI
IF thisform.pageframe1.page2.txtDni.Text <> ' '
*Borro el otro campo
thisform.pageframe1.page2.txtCodigo.Value=''
SELECT clientes
SET ORDER TO dni
SEEK (VAL(thisform.pageframe1.page2.txtdni.Text))
IF FOUND()
Repito, si realizo las búsquedas por un solo campo funcionan correctamente, pero al querer intercalar las búsquedas, solo funciona por el 1° campo utilizado.
Ej: busco por dni -->ok
Busco por otro dni --> ok
Quiero buscar por código --> NADA
Vuelvo a buscar por dni --> ok
Veamos si podemos solucionarlo de esta manera:
En primer lugar vamos a asegurarnos que la tabla clientes está en el entorno de datos de tu formulario.
Luego debemos constatar que la tabla tenga definidos los índices definidos para los campos código y dni.
Ahora bien, si tienes dos botones de búsqueda vamos a repasar el código del evento click de cada botón:
* Botón Buscar Codigo *
*******************
IF !empty(thisform.pageframe1.page2.txtCodigo.value)
     IF SEEK (VAL(thisform.pageframe1.page2.txtCodigo.value), 'CLIENTES', 'CODIGO')
          * Si encuentra el valor *
     ENDIF
     else
     * el txt codigo está vacio *
ENDIF
* Botón Buscar DNI *
*****************
IF !empty(thisform.pageframe1.page2.txtdni.value)
     IF SEEK (VAL(thisform.pageframe1.page2.txtdni.value), 'CLIENTES', 'CODIGO')
          * Si encuentra el valor *
     ENDIF
     else
     * el txt codigo está vacio *
Endif
RECOMENDACIONES: El código es muy simple y debe funcionar bien. Presta atención que estamos utilizando la propiedad value y NO Text. Además fíjate la sintaxis del comando seek.
Increíble ahora si funciona correctamente, pero quede con la intriga de saber que es lo que realmente hace funcionar el cambio, el uso del Value en ves del Text, ¿la manera en que realizas el seek?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas