主题:[讨论]SCAN到重复的数据(foxpro菜鸟一个)
在我debug我下面的code的过程中, 当SCAN我的tmpA cursor的时候, 例如里面有一个depno为"729644"的数据吧. 当SCAN完这条数据后, 理论上应该跳到下一跳数据才对, 我也不知道为什么他又SCAN同一条数据(depno为"729644")一次. 然后打印出来的report结果是数据库中每一条数据, 程序都SCAN了两次. 我不明白是什么原因, 按照我SCAN的语法也看不出什么毛病. 而且以前一直用着也没有出过这样的问题, 不知道是不是因为累积数据太多了, foxpro会在SCAN时出些这样的bug呢? 请各位高人帮忙看看, 我把code都贴上来了, 谢谢
SELECT acno, depno, val(depno) as dnumeric, depsts, txndate, valdate, orgdepn;
FROM fddata;
WHERE &wcond ;
ORDER BY depno ;
INTO CURSOR tmpA
IF _TALLY > 0 THEN
CREATE CURSOR repcsr ( acno C(12), depno C(6), depsts C(1), txndate D, valdate D, orgdepn C(6) )
CALCULATE MIN(dnumeric) TO dno
SCAN
SCATTER MEMVAR
IF m.dnumeric > dno + 1 THEN
FOR i = dno + 1 TO dnumeric - 1
SELECT repcsr
APPEND BLANK
REPLACE depno WITH ALLTRIM(STR(i))
ENDFOR
SELECT tmpA
SCATTER MEMVAR
ENDIF
SELECT repcsr
APPEND BLANK
GATHER MEMVAR
dno = dnumeric
ENDSCAN
SELECT acno, depno, val(depno) as dnumeric, depsts, txndate, valdate, orgdepn;
FROM fddata;
WHERE &wcond ;
ORDER BY depno ;
INTO CURSOR tmpA
IF _TALLY > 0 THEN
CREATE CURSOR repcsr ( acno C(12), depno C(6), depsts C(1), txndate D, valdate D, orgdepn C(6) )
CALCULATE MIN(dnumeric) TO dno
SCAN
SCATTER MEMVAR
IF m.dnumeric > dno + 1 THEN
FOR i = dno + 1 TO dnumeric - 1
SELECT repcsr
APPEND BLANK
REPLACE depno WITH ALLTRIM(STR(i))
ENDFOR
SELECT tmpA
SCATTER MEMVAR
ENDIF
SELECT repcsr
APPEND BLANK
GATHER MEMVAR
dno = dnumeric
ENDSCAN