浏览数据集
每个活动数据集都有一个游标或指针,指向数据集中的当前行。
数据集中的当前行是可以通过 edit 、 insert 和 delete 方法操作的行,
也是其字段值当前显示在表单上数据感知控件中的行。
您可以通过将游标指向移动到不同的行来更改当前行。 下表列出了您可以在应用程序代码中用于移动到不同记录行的方法:
客户端方法 |
服务器端方法 |
描述 |
|---|---|---|
将游标移动到实体数据集的第一行。 |
||
将游标移动到实体数据集的最后一行。 |
||
将游标移动到实体数据集中当前行的下一行。 |
||
将游标移动到实体数据集中当前行的上一行。 |
除了这些方法之外,下表描述了两种在遍历数据集记录时能提供有用信息的方法:
客户端方法 |
服务器端方法 |
描述 |
|---|---|---|
如果该方法返回 true,则游标位于数据集的第一行;否则,不确定游标是否位于数据集的第一行。 |
||
如果该方法返回 true,则游标位于数据集的最后一行;否则,不确定游标是否位于数据集的最后一行。 |
每次游标在数据集中移动到另一条记录时,都会触发以下事件:
客户端事件 |
服务器端事件 |
描述 |
|---|---|---|
|
在应用程序显示的记录从一条切换到另一条之前发生。 |
|
|
在应用程序显示的记录从一条切换到另一条之后发生。 |
使用这些方法,我们可以浏览数据集。例如,
在客户端:
function get_customers(customers) {
customers.open();
while (!customers.eof()) {
console.log(customers.firstname.value, customers.lastname.value);
customers.next();
}
}
在服务器端:
def get_customers(customers):
customers.open()
while not customers.eof():
print customers.firstname.value, customers.lastname.value
customers.next()
更简洁的浏览数据集方式
客户端上有 each 方法,可用于浏览数据集:
例如:
function get_customers(customers) {
customers.open();
customers.each(function(c) {
if (c.rec_no === 10) {
return false;
}
console.log(c.rec_no, c.firstname.value, c.lastname.value);
});
}
在服务器端,我们可以通过以下方式遍历数据集行:
def get_customers(customers):
customers.open()
for c in customers:
if c.rec_no == 10:
break
print c.firstname.value, c.lastname.value
两个函数都将输出数据集中前 10 条记录的客户姓名。
在这两种情况下,c 和 customers 都是指向同一对象的指针。