很简单的东东,放在这里以便以后翻看。
在使用queryRun.next()遍历queryRun中query所过滤出来的数据集时,使用queryRun.reset()会将记录指针重新放到第一条记录上,也即返回到第一条记录上。
如:
表DavQueryRunReset包含记录:
Field1
1
2
3
4
5
6
7
执行如下代码:
Query query;
QueryRun qr;
QueryBuildDataSource qbds;
QueryBuildRange qbr;
DavQueryRunReset dqrr;
int i = 0;
;
query = new Query();
qbds = query.addDataSource(tablenum(DavQueryRunReset),'DavQueryRunReset');
qbr = qbds.addRange(fieldnum(DavQueryRunReset,Field1));
qbds.addRange(fieldnum(DavQueryRunReset,Field1)).value('1');
qbds.addRange(fieldnum(DavQueryRunReset,Field1)).value('2');
qbds.addRange(fieldnum(DavQueryRunReset,Field1)).value('3');
qbds.addRange(fieldnum(DavQueryRunReset,Field1)).value('4');
qbds.addRange(fieldnum(DavQueryRunReset,Field1)).value('5');
qbds.addRange(fieldnum(DavQueryRunReset,Field1)).value('6');
qr = new QueryRun(query);
qr.init();
//if(qr.prompt())
{
while(qr.next())
{
dqrr = qr.get(tablenum(DavQueryRunReset));
i++;
if(i>3)//如果这里不跳出,则完整的会打印出1,2,3,4,5,6
break;
print dqrr.Field1;//本部分最终输出结果为:1,2,3
}
}
qr.reset();
while(qr.next())
{
dqrr = qr.get(tablenum(DavQueryRunReset));
print dqrr.Field1;//本部分输出结果为:1,2,3,4,5,6
}
pause;
最终输出结果为:
1
2
3
1
2
3
4
5
6