2.5.1访问

创建

下面的网格中,从文件读取二维结构化数据,创建序表对象并存入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

A2B2中的结果如下:

 

可以看到,由于B1的第2条记录指向A1的第20条记录,因此两者的计算结果相同。从A2B2的表达式中还可以发现,序表和排列访问字段的语法完全相同。

字段名可以用字段序号来代替,结果一样,比如写成:=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函数时,可以指定获得某个序号的字段值,B1A2中的结果如下:

 

使用array函数时,可以获得记录中,指定字段名的一个或一些列的值,如果不指定,则会返回记录中所有字段值构成的序列。B2A3B3中结果如下:

   

访问列数据

下面的网格中,从序表A1中按列名取PName列,存入A2。仍然从序表A1中按列名取PNameAmount这两列,存入B2。排列和序表访问列数据时的写法完全一样,这里只用序表来举例:

 

A

B

1

=file("Order_Books.txt").import@t()

=A1.select(Amount>20000)

2

=A1.(PName)

=A1.new(PName,Amount)

A2B2中的计算结果分别如下:

 

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中结果如下: