Na minha visão das coisas o texto da documentação da Função OrdScope() está funcionando corretamente, pois vejamos:
The OrdScope() function defines or clears the top and bottom scope for indexed database navigation. The top and bottom scope values define the range of values valid for navigating the record pointer within the controlling index.
Ou seja, ela estabelece o Primeiro Registro e/ou o Último Registro. Nada faz com os registros intermediários.
Vejam. Basta incluir uma única linha, e o resultado está perfeito muita rápido.
Código: Selecionar todos
Function Main()
Request DBFCDX
RddSetDefault('DBFCDX')
Set Date Brit
Set Century On
Scroll()
If !File('Titulos.DBF')
aStructure:={}
AADD(aStructure,{'Data_Vecto', 'D' ,0, 0})
AADD(aStructure,{'Tipo' , 'C' ,1, 0})
DbCreate('Titulos',aStructure)
Use Titulos.DBF New
For i=1 To 30
DbAppend()
Replace Data_Vecto With Date()+i
Replace Tipo With If(IsImpar(i),'1','2')
Next
Index On Dtos(Data_Vecto) + Tipo TAG 1 To Titulos
Set Index To Titulos
Else
Use Titulos.DBF New Index Titulos
EndIf
OrdSetFocus(1)
dDataIni:=Ctod('01/06/2008')
dDataFin:=Ctod('30/06/2008')
OrdScope(0,Dtos(dDataIni) + '2')
OrdScope(1,Dtos(dDataFin) + '2')
Set Filter to Tipo = "2" //<<<<<<<<<<<<<<<< esta linha.
DbGoTop()
Browse()
Return(.T.)
Function IsImpar(nNumero)
Return((nNumero%2)!=0)


