Page 1 of 1

Es posible éste filtro con scopes?

Posted: Sun Jan 14, 2007 5:35 pm
by JoseLuis
Hola amigos
Hasta ahora vengo haciendo las busquedas internas en una base de datos, es decir por nombres que contengan algo de la siguiente forma:

Code: Select all

MsgGet( "Introduzca las letras a buscar","BUSQUEDA POR CADENA EN EL NOMBRE",@codibus ) 
(aAlias[21])->( dbSetfILTER( {|| (ALLTRIM(Upper(@codibus)) $ Upper((aAlias[21])->Nombre))},'(ALLTRIM(Upper(@codibus)) $ Upper((aAlias[21])->Nombre))') )
Esto funciona perfectamente en el PC que tiene la aplicación, pero para otros usuarios de red, cuando la BD tiene unos 10.000 registros, se hace lento, por lo que pensé en utilizar scopes de la siguiente manera:

Code: Select all

MsgGet( "Introduzca las letras a buscar","BUSQUEDA POR CADENA EN EL NOMBRE",@codibus ) 
(aAlias[21])->(Ordscope(0,(ALLTRIM(Upper(@codibus)) $ Upper((aAlias[21])->Nombre))))
(aAlias[21])->(Ordscope(1,(ALLTRIM(Upper(@codibus)) $ Upper((aAlias[21])->Nombre))))
Pero ésto no funciona.
Existe alguna forma de hacer lo que quiero,ya sea con scopes o de alguna otra forma que sea rápida?

Saludos

Jose Luis

Posted: Mon Jan 15, 2007 1:30 am
by R.F.
Los scopes requieren un indice sobre el campo que vas a filtrar y no soportan el operador "$"

Si utilizas el servidor local de ADS (ADSLOC32.DLL) puede seguir haciendo tus filtros con DBSETFILTER, pero cientos de veces mas rapido que con el Harobur normal.

Posted: Mon Jan 15, 2007 7:50 am
by JoseLuis
Vale, muchas gracias, voy a enterarme que es eso de ADS, que veo que escribis mucho sobre el tema.

Saludos

Jose Luis