FoxPro/Visual FoxPro - Found() siempre devuelve verdadero

 
Vista:

Found() siempre devuelve verdadero

Publicado por LSMN (3 intervenciones) el 23/01/2003 02:41:08
Mi problema es que busco una clave con seek y cuando pregunto if found() si la clave existe o no siempre ejecuta la parte verdadera.
el codigo que escribo es el siguiente:
el campo en la tabla es numério integer de 4 caracteres y es clave principal.

campo de texto: txtidcodigo
evento: LOSTFOCUS

parameters clave
clave = 0
store this.value to clave

seek clave

if found()
mensaje " LA CLAVE EXISTE"
else
mensaje "LA CLAVE NO EXISTE"
endif
En la tabla de ejemplo tengo 4 valores grabados.
idcodigo= 0,1,2,3, y 4

y por mas que en el formulario ingrese 5555 ejecuta found() .T.

Help me.
Gracias por los aportes
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:Found() siempre devuelve verdadero

Publicado por JULIA (38 intervenciones) el 23/01/2003 03:53:48
Tu indice a de estar dañado porque no pruebas
en la forma sin usar indice en la tabla
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:Found() siempre devuelve verdadero

Publicado por Roman Suazo (2723 intervenciones) el 23/01/2003 05:01:34
Antes de ejecutar el seek prueba on SET EXACT ON, nos cuentas si
sigue el problema.

Saludos
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:Found() siempre devuelve verdadero

Publicado por Roman Suazo (2723 intervenciones) el 23/01/2003 05:11:48
Pensandolo bien el SET EXACT ON solo se aplicaria si estuiveras
trabajando con caracteres, lo cual no parece tu caso. En este momento no tengo el visual , checa el comando SET NEAR tal vez
te ofrece algo interesante (no tengo el visual para recordarme exactamente lo que hacia). Lo de los indices es probable, aunque lo
raro es que solo son pocos registros. De todas maneras borra el indice
y reconstruyelo o prueba con lo que te dije.

Saludos
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:Found() siempre devuelve verdadero

Publicado por upliftmofopartyplan (265 intervenciones) el 23/01/2003 17:46:47
Hola!
despues de hacer todo lo que te dijenron, porque no intentas lo sig:
en el evento lostfocus

clave=val(this.value) &&porque tu clave es numérica.(no sé porque
colocas el PARAMETERS??)
seek clave
if found()....

saludos.
Uplift
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:Found() siempre devuelve verdadero

Publicado por patricia (1 intervención) el 27/01/2003 04:20:31
Debes incluir después del if found() una palabra que involucre todo el programa que creaste como por ejemplo:
if found ()
do llenado
endif
w="n".......
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:Found() siempre devuelve verdadero

Publicado por Hector Urbina (1 intervención) el 28/01/2003 15:20:42
Segun lo que dices que Found() siempre te devuelve .t., resulta que Seek() solo busca indices de tipo cadena (Character) y no de Integer, ahora si el tipo de dato que buscas es de cadena utiliza Set Deleted On para que el indice no acceda a registro marcados como eliminado
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:Found() siempre devuelve verdadero

Publicado por Hector Urbina (17 intervenciones) el 28/01/2003 15:30:18
Bueno espero que la explicacion anterior, te haya quedado claro. Pero si aun no lo entiendes hay te va un example:

parameters clave
clave = Space(4) && ES AQUI TU ERROR
store this.value to clave

seek (clave) && LOS VALORES SE ENCIERRAN EN PARENTESIS

if found()
mensaje " LA CLAVE EXISTE"
else
mensaje "LA CLAVE NO EXISTE"
endif
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:Found() siempre devuelve verdadero

Publicado por Juan Jose (17 intervenciones) el 10/02/2003 23:08:46
Segun lo que se del seek, busca en la tabla segun en indice,si este es numerico o de cualquier tipo, la busqueda la hara correctamente..

si estas en un formulario y el texbox donde introduces el tus parametros de busqueda esta vinculada a una tabla o cursor (controlsource) el comando seek siempre te devolvera .t.

prueba que el textbox no este vinculado a ninguna tabla...... lo puedes hacer en tiempo de ejecucion asi:
variable=thisform.text1.controlsource && guardad el control source
thisform.text1.controlsource="" &limpias el controlsource
le das el foco a text1
introduce los datos a buscar
y has tu proceso de busqueda.

cuando hayas terminado de hacer lo que nececites con el registro encontrado devuelvele el control source al text1
thisform.text1.controlsource=variable

espero te sirva

saludos
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