Problemas con Scan en un cursor creado a partir de un BD SQL Server 2000

26/10/2010 - 14:19 por ans240577 | Informe spam
Hola gente del grupo:
Como dice el titulo estoy trabajando con SQL server 2000 + VF 9,creo
un cursor a partir de una tabla,luego intento hacer una busqueda con
scan,pero esta no mueve el puntero del 1º registro,y no me encuentra
coincidencias que si existen.
Si alguien me puede aclarar el tema de que si es necesario que esten
indexados la columnas de la tabla por el cual se hacen las
busquedas,para que trabaje el scan, y si estas son heredadas por el
cursor,o como agregarlos posteriormente.


Asi creo el cursor:

cSQL = "SELECT * FROM PERSONAS "
nErro = SQLExec(nID, cSQL, crsCursor)


Asi planteo el scan:

Scan For AllTrim(Evaluate(crsCursor + ".DNI")) AllTrim(ThisForm.txtLocalizar.Value)

nRec = RecNo()

cMsgText = "Beneficiario " +
AllTrim(Evaluate(crsCursor + ".Apellido")) + +
AllTrim(Evaluate(crsCursor + ".nombre")) + " encontrado." + Chr(13)
+ ;
"Desea continuar Buscando ?"
=Aviso()
If MessageBox(cMsgText,4 + 32 + 256 ,
cTituloDialogo) = 6
Loop
Else
Exit
EndIf
EndScan


Desde ya agradesco cualquier ayuda.
 

Leer las respuestas

#1 Richard Silva
08/11/2010 - 14:34 | Informe spam
Hola,

No es estrictamente necesario indexar los campos de búsqueda, aunque
MUY recomendable por el tema velocidad. El índice puedes agregarlo
como a cualquier tabla FOX.

Puedes acelerar el proceso si al inicio declaras lo que estás
buscando. Algo así como:

local lcDNI
lcDNI = AllTrim(ThisForm.txtLocalizar.Value)

Scan For AllTrim(Evaluate(crsCursor + ".DNI")) = lcDNI

nRec = RecNo()
...
endscan


Has probado usando algo como:

select crsCursor
brow for AllTrim(Evaluate(crsCursor + ".DNI")) = lcDNI


Espero sea de ayuda.
Saludos.

Preguntas similares