点击方向按钮上下移动记录。
设计思路。
以临时表TmpTable1举例。
在表中加一个real类型字段(eg:ColumnSeq)用于排序,给表建一个ColumnSeq字段的索引ColumnSeqIdx.
在Form的数据源中设置index属性:ColumnSeqIdx. 这样Grid显示数据就会根据ColumnSeq排序。
在form init 临时表数据时,ColumnSeq为一个累加值。
当点击上移记录按钮的时候,倒序TmpTable1的ColumnSeq,大于当前行ColumnSeq,取前2个ColumnSeq和值除以2,
用这个值更新当前移动行的ColumnSeq。
比如,当前行ColumnSeq(10),上2行=8+9,用(8+9)/2.0= 8.5,用8.5更新当前行则达到了实现排序的目的。

void click() { // button move Up tmpTable1 tmp; real newSeq; int searchTimes; ; tmp.settmpTable( tmpTable1 ); while select tmp order by ColumnSeq Desc where tmp.ColumnSeq < tmpTable1.ColumnSeq { searchTimes++; newSeq += tmp.ColumnSeq; if( searchTimes>=2) break; } if( searchTimes>=1) { newSeq = newSeq /2.0; tmpTable1.ColumnSeq = newSeq; tmpTable1.update(); tmpTable1_DS.executeQuery(); tmpTable1_DS.refresh(); tmpTable1_DS.findRecord( tmpTable1); } }