首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

ado怎么在指定行插入行

2012-09-14 
ado如何在指定行插入行在财务的凭证里如果实现插入行功能,在指定的行插入adoquery.insert 插入后还是到最

ado如何在指定行插入行
在财务的凭证里如果实现插入行功能,在指定的行插入

adoquery.insert 插入后还是到最后一行,怎么回事

[解决办法]
数据表中的数据可按某一个字段排序,你可以用凭证号之类的字段作排序,显示时看上去就是插到了某条记录之前或之后。
[解决办法]
跟索引,排序有关系

可以加一个序号,1,2,3...n用来排序,插入的时候,更新后面的序号+1
[解决办法]
首先,说明一下,指定行插入和ADO没关系,ADO只是负责加入数据。(应该是这样吧)
对于数据库,如果是增加记录,一般情况下,都是追加到最后的。
而LZ说的指定行插入,则是靠按一定列排序来实现这样的效果的。
比如:某一列,有两条记录,一个是10,一个是20。那再插入一条记录,值是15。排序后,就相当于在10和20中间插入一行了。
[解决办法]
这个问题我已尝试过数次,均未成功,因为insert和append在edit状态下recno均为-1,一旦post之后,新增加记录的recno值就会变成最大值,就自动排到最后面去了。 最后还是用跟3楼类似的办法去解决了,当然,系统开销也增大了。ADO就有这毛病,要用它就必须去忍受它这一毛病。
[解决办法]
印象中,对于数据库,记录是不分先后顺序的,只是在排序时,才按一定顺序显示的。
所以,新增加的记录,都是排在后面的。
当然,也有特殊方法来分先后顺序的。
[解决办法]

探讨
这个问题我已尝试过数次,均未成功,因为insert和append在edit状态下recno均为-1,一旦post之后,新增加记录的recno值就会变成最大值,就自动排到最后面去了。 最后还是用跟3楼类似的办法去解决了,当然,系统开销也增大了。ADO就有这毛病,要用它就必须去忍受它这一毛病。

[解决办法]
建议楼主,勿用它的自然顺序来处理数据,数据量少的时候,可能分不出优劣,但数据量大时,那样折腾数据库不是个好主意。我虽然不懂数据库的东西,但是,改变数据记录的索引,我敢肯定,一定比改变记录位置要来得容易。3楼的思维才是正解。
[解决办法]
只有一个方法,就是自己表有一个序号列来保存没行的序号(此字段的值由前台Ado修改保存进去);
Insert 的时候在前台Edit改变影响的记录行的序号值,
用此序号列做为排序索引,保险一点就Order by 下
序号 值
 1 1
 2 2
 3 3
如果要在序号为2的前面插入入一行那么序号就跟着变成这样
序号 值
 1 1 
 2 (这里是ado.insert的记录,前台只要处理好序号)
 3 2
 4 3
插入时 需要先Post下获取行号,循环修改后面记录的序号
[解决办法]
ADO会这样,TClientDataSet试试会不会是你要的结果?
如果TClientDataSet是你要的结果,
那,把ADO的内容转给TClientDataSet,
完成后再把TClientDataSet转回ADO持久化即可。

热点排行