300分求解!dbgrid中,为了使增加纪录后整个的排序不发生变化,新加了一个字段seq,存放每条纪录的位置,但最后更新数据库时却报错,真是伤脑筋啊!例子如下:

  • 主题发起人 主题发起人 coffeeffee
  • 开始时间 开始时间
C

coffeeffee

Unregistered / Unconfirmed
GUEST, unregistred user!
300分求解!dbgrid中,为了使增加纪录后整个的排序不发生变化,新加了一个字段seq,存放每条纪录的位置,但最后更新数据库时却报错,真是伤脑筋啊!例子如下:(300分)<br />这是adoquery的sql语句
select 1,id,idname from tid;其中1是一个常数,此字段用来dbgrid中存放每条纪录的位置
在使用insert方法时给新加的纪录的字段1赋值,并以此排序,可实现按自己想要的顺序显示,但最后用adoquery的UpdateBatch存到数据库时报错,说不存在1这个字段,的确在数据库时不存在的,但有没有什么方法指定更改数据库时不更改这个字段呢?我只用来排序而已阿!
 
就是提交的时候不把1更新过去!
不知道ado是如何做?
bde中可以用tupdatesql来选择要更新的列,把1去掉就可以了!
 
55,tupdatesql是哪个控件的属性?[:(]
 
用ADO是达不到这个效果的,但是可以不使用UPdateBatch,也就是说自己利用Sql语句将数据集的数据一条一条的存到数据库去,我想BDE也是这样做的,只不过它做的更好而已。

Query1.First;
where not Query1.Eof do
begin
InsertIntoDB(...) ---你的函数,在此函数中,可以利用SQL语句将数据插入到数据库
Query1.Next;
end
 
select 1,id,idname from tid中不先1这个字段,在AdoQuery1的Field Editor中加一个新字段来记录位置不知行不行
 
如果要排序就加一个索引字段,你的方法不行
 
我就是不想用sql来写啊!想用控件来实现,因为还有修改的情况,都用sql太烦啦
to迷糊:我不是想排序,而是想维持纪录本来的顺序,就只有加个排序了,索引字段更新
时可以不列入更新范围吗?如何加?谢谢!
 
如果只是要增加纪录后整个的排序不发生变化那用自增字段吧,更新
时可以不列入更新范围,sqlserver和access都有自增字段,oracle可以用队列,其他的数据库就不太清楚了,不过也应该有吧
 
试试在fieldeditor中增加一个计算字段试试!
不要使用select 1,* from table_name的方式!这种显式方式ado傻乎乎得认为你有这个实际字段!
要是BDE就好了!ADO真让人伤心!
 
用自增字段不行啊,因为改了数据表结构,我这里只是前台程序的现实问题,当然不能以
修改数据库表结构为代价啊!
bde可以指定update的列吗?怎么指定?
增加计算字段试过,也不行,那些值根本没法用程序改。
 
后退
顶部