Discussion:
Problemas con Scan en un cursor creado a partir de un BD SQL Server 2000
(demasiado antiguo para responder)
a***@yahoo.com.ar
2010-10-26 12:19:58 UTC
Permalink
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.
Richard Silva
2010-11-08 13:34:34 UTC
Permalink
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.
a***@yahoo.com.ar
2010-11-12 10:52:11 UTC
Permalink
Post by Richard Silva
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
local lcDNI
lcDNI = AllTrim(ThisForm.txtLocalizar.Value)
Scan For AllTrim(Evaluate(crsCursor + ".DNI")) = lcDNI
   nRec = RecNo()
   ...
endscan
select crsCursor
brow for AllTrim(Evaluate(crsCursor + ".DNI")) = lcDNI
--
Espero sea de ayuda.
Saludos.
Muchas gracias por la respuesta.

Saludos!

Loading...