2.6.1增加记录

下面的网格中,在序表A1中追加1条记录r1,然后在第2行插入1条记录r2,其中r1依次设定字段值,r2指定字段名称设定字段值;最后再在第2行起插入3条记录r3,r4r5,这些记录IDNAME字段有值,其他字段为空:

 

A

1

=demo.query("select * from STUDENTS")

2

>A1.insert(0,111,"Jessica","F",18)

3

>A1.insert(2,25:ID,"William":NAME,20:AGE,"M":GENDER)

4

>A1.insert(2:3,25+#:ID,"William"+string(#):NAME)

A1中的序表,在A2,A3,A4中陆续添加记录。在工具栏中点击分步执行,可以看到A1中的序表变化如下:

可以看到,在序表中添加记录,都是使用T.insert() 函数,可以指定记录的插入位置,也可以设定新值的字段,未设定的字段值为空。

 

排列和序表不同,实际上是记录引用构成的序列,因此在排列中只能加入新的记录引用:

 

A

1

=demo.query("select * from STUDENTS")

2

=A1.to()

3

>A1.insert(0,111,"Jessica","F",18)

4

>A2.insert(2, A1(8))

A2中的排列是用to函数,由A1中序表的记录构成的,如果需要复制成序表,需要使用T.derive() 函数。A1A2中的数据,和上面例子中A1中的序表是相同的。仍然分步执行网格程序,在A3中的代码执行后,A1A2中的数据分别如下:

可以看到,序表中增加了记录,但是已有的记录并未有修改,因此A2中的排列不受影响。A4中将新加的记录添加到排列中,而插入的位置与序表并不相同,执行后,A2中排列如下:

序表和排列新增记录时语法相差较大。序表新增的是实体记录,在序表A1上直接使用insert函数就可以。排列只能新增记录的引用,必须先有实体记录才能引用,例子中的实体记录存在于A1中(也可以是其它序表中的记录,但是同一排列中的记录应该保持结构相同,否则有可能出现计算错误)。

insert函数的第一个参数为0时表示在结尾追加记录,不为零时表示在指定位置插入,这个规则对序表和排列都一样。