也許你的意思是過濾掉的索引。但是你不需要做這樣的事情。你可以簡單地有一個索引結合員工號碼(我認爲它是一個整數)和日期。然後,你可以使用一個簡單的for和while範圍子句或範圍或類似的(你真的沒有解釋你會做什麼) - 甚至一個SQL可能是更容易的方式取決於你會做什麼。 即:(使用日期作爲列名是一個壞主意,但那是另一回事)
INDEX ON padl(empId, 10, '1') + dtoc(Date,1) TAG MyOrder
有這樣一個指標,你可以掃描所有記錄中的日期範圍這樣的給定僱員:
local lnEmployee, lcStart, lcEnd
lnEmployee = 1 && whatever the employee number is
lcStart = padl(m.lnEmployee, 10, '1')+dtoc(ThisForm.DateFrom,1)
lcEnd = padl(m.lnEmployee, 10, '1')+dtoc(ThisForm.DateTo,1)
scan for padl(empId, 10, '1') + dtoc(Date,1) >= m.lcStart and ;
padl(empId, 10, '1') + dtoc(Date,1) <= m.lcEnd
* whatever
endscan
這將做同樣的:
local lnEmployee, lcStart, lcEnd
lnEmployee = 1 && whatever the employee number is
lcStart = padl(m.lnEmployee, 10, '1')+dtoc(ThisForm.DateFrom,1)
lcEnd = padl(m.lnEmployee, 10, '1')+dtoc(ThisForm.DateTo,1)
set order to tag myOrder
set range to m.lcStart, m.lcEnd
scan
* whatever
endscan
PS:其實對EMPID和日期指標,對...一個簡單的掃描會做了。即:
scan for empId = m.lnEmpoyee and ;
Date >= ThisForm.DateFrom and ;
Date <= ThisForm.DateTo
*...
endscan
管理謝謝生病嘗試一些他們可能是一個更好的解決方案謝謝! – user2435026