创建
下面的网格中,从文件读取二维结构化数据,创建序表对象并存入A1单元格。通过查询A1创建排列对象并存入B1:
|
A |
B |
1 |
=file("Order_Books.txt").import@t() |
=A1.select(Amount>20000) |
计算后,A1中序表如下,窗口中只显示了部分数据,可以拖拽右侧的滚动条显示全部记录:
B1中排列如下:
说明: 序表对象可以创建自数据库、文件,也可以通过向空白对象插入记录来创建。排列创建自序表,本身并不存储实体记录,只存储序表中部分记录的引用。
访问字段值
下面的网格中,读取序表对象A1的第20条记录的PName字段,存入A2单元格。读取排列对象B1的第2条记录的PName字段,存入B2单元格:
|
A |
B |
1 |
=file("Order_Books.txt").import@t() |
=A1.select(Amount>20000) |
2 |
=A1(20).PName |
=B1(2).PName |
A2和B2中的结果如下:
可以看到,由于B1的第2条记录指向A1的第20条记录,因此两者的计算结果相同。从A2和B2的表达式中还可以发现,序表和排列访问字段的语法完全相同。
字段名可以用字段序号来代替,结果一样,比如写成:=A1(20).#3。这种代替在集算器中是通用的,之后的例子不再赘述。
用field函数和array函数也可以获取序表或者记录中字段的值,如:
|
A |
B |
1 |
=file("Order_Books.txt").import@t() |
=A1.field(2) |
2 |
=A1(20).field(2) |
=A1(20).array(PName) |
3 |
=A1(20).array(PID,PName) |
=A1(20).array() |
使用field函数时,可以指定获得某个序号的字段值,B1和A2中的结果如下:
使用array函数时,可以获得记录中,指定字段名的一个或一些列的值,如果不指定,则会返回记录中所有字段值构成的序列。B2,A3和B3中结果如下:
访问列数据
下面的网格中,从序表A1中按列名取PName列,存入A2。仍然从序表A1中按列名取PName和Amount这两列,存入B2。排列和序表访问列数据时的写法完全一样,这里只用序表来举例:
|
A |
B |
1 |
=file("Order_Books.txt").import@t() |
=A1.select(Amount>20000) |
2 |
=A1.(PName) |
=A1.new(PName,Amount) |
A2和B2中的计算结果分别如下:
T.(x),这种语法只能取一列数据,此时的计算结果为序列,没有结构化的列名。T.new() 函数可以取一列或多列数据,此时的计算结果为序表,有结构化的列名。
不论被计算的对象是序表还是序列,T.new() 或者A.new() 函数都会创建新的序表,即B1.new(PName, Amount) 的计算结果也是序表。
访问行数据
下面,从序表A1中按行号取前2条记录存入A2,从序列B1中按行号取出前2条记录存入B2,排列和序表访问行数据的写法也是完全一样的:
|
A |
B |
1 |
=file("Order_Books.txt").import@t() |
=A1.select(Amount>20000) |
2 |
=A1([1,2]) |
=B1([1,2]) |
A2中结果如下:
B2中结果如下: