在 DBGrid 中显示的最后一条记录(底部)之后插入
Inserting after the last record (bottom) shown in DBGrid
使用 ClientDataSet 在最后一条记录之后插入的代码应该是什么?
我尝试了以下方法:
cdsSomething.Last;
cdsSomething.Insert:
但它似乎取代了最后一条记录。我确定必须有一个快速代码。
一般来说,添加的记录(或实际上任何记录)出现在 DBGrid 中的位置不取决于用于插入它的数据集操作。
其实DBGrid与本题无关,它只是将ClientDataSet中添加的行按照当前索引顺序显示在CDS中添加行出现的位置。
因此,例如,如果 CDS 包含一个整数 ID 字段,并且其当前索引是该 ID 字段(例如,因为 CDS 的 IndexFieldNames 属性 设置为 'ID'),使添加的行出现在末尾,您需要做的就是将其 ID 值设置为高于 CDS 中任何现有记录的值。如果该字段的类型为 ftAutoInc
,这当然会自动发生。
Uwe Raabe 对这个问题的回答有点不同。如果 CDS 没有使用任何索引,他所说的是正确的,因此记录按照它们在 CDS 数据文件中出现的物理顺序显示。但是,如果显示顺序很重要,则依靠物理顺序来确定显示顺序不一定是个好主意。如果是,则使用一个(或多个)索引字段来确定顺序。
将记录附加到数据集末尾(更不用说任何索引)的方法是Append
。您甚至不需要之前调用 Last
。
cdsSomething.Append;
Insert
在所选记录之前插入一行,因此对于您的代码,新记录应该成为倒数第二条记录。
使用 ClientDataSet 在最后一条记录之后插入的代码应该是什么?
我尝试了以下方法:
cdsSomething.Last;
cdsSomething.Insert:
但它似乎取代了最后一条记录。我确定必须有一个快速代码。
一般来说,添加的记录(或实际上任何记录)出现在 DBGrid 中的位置不取决于用于插入它的数据集操作。
其实DBGrid与本题无关,它只是将ClientDataSet中添加的行按照当前索引顺序显示在CDS中添加行出现的位置。
因此,例如,如果 CDS 包含一个整数 ID 字段,并且其当前索引是该 ID 字段(例如,因为 CDS 的 IndexFieldNames 属性 设置为 'ID'),使添加的行出现在末尾,您需要做的就是将其 ID 值设置为高于 CDS 中任何现有记录的值。如果该字段的类型为 ftAutoInc
,这当然会自动发生。
Uwe Raabe 对这个问题的回答有点不同。如果 CDS 没有使用任何索引,他所说的是正确的,因此记录按照它们在 CDS 数据文件中出现的物理顺序显示。但是,如果显示顺序很重要,则依靠物理顺序来确定显示顺序不一定是个好主意。如果是,则使用一个(或多个)索引字段来确定顺序。
将记录附加到数据集末尾(更不用说任何索引)的方法是Append
。您甚至不需要之前调用 Last
。
cdsSomething.Append;
Insert
在所选记录之前插入一行,因此对于您的代码,新记录应该成为倒数第二条记录。