如何按这样的要求快速更新数据???

138075 2004-05-01 07:04:19
我有一个有20000条记录的表,其中有一个“编号”的string字段
我想:
让“编号”字段重新按“00001”-“20000”的顺序写入数据。
with QYtemp do
begin
...
while not eof do
begin
edit;
....
fieldbyname('编号').asstring:=....
post;
next;
end;

这样做的话,速度慢的要死。

有什么办法用 update from的形式实现?
...全文
132 22 点赞 打赏 收藏 举报
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ecfan1 2004-06-21
ms SQL UPDATE的方法是最快的,
  • 打赏
  • 举报
回复
liushiboy 2004-06-21
如果是用ADO的话,就要把LockType设成ltBatchOptimistic
用BDE的话,要把cachedupdate设成true
在post之后,需要用applyupdate之类的函数提交~
另外,很重要的是:

with QYtemp do
begin
DisableControl;
...
while not eof do
begin
edit;
....
fieldbyname('编号').asstring:=....
post;
next;
end;
EnableControl;
========================
在前后加这两个就会大加快速度
  • 打赏
  • 举报
回复
Changefish 2004-06-20
可以试试batchupdate模式
  • 打赏
  • 举报
回复
gechaosa 2004-06-20
delcare I=0
update set fielsd=right('0000'+cast (as i char(10) ),5),i+1 from tabel
  • 打赏
  • 举报
回复
hamzsy 2004-06-20
看错了,不好意思。

可以分批处理,一次处理1000条速度应该不会慢的
  • 打赏
  • 举报
回复
hamzsy 2004-06-20
一个比较快的方法是,再建立一个表,用一个字段来存编号,比如000015,或者就干脆存15,这样当下次存数据时读出此数据再做处理,保存后再更新为16就可以了

这下可以给我分了吧(^_^)
  • 打赏
  • 举报
回复
138075 2004-06-19
???
  • 打赏
  • 举报
回复
yutish2002 2004-05-09
这个问题好呀。
不过好像一般很难找到很好的方法哟。
帮你顶!!!!
有好方法的快献哟!!!!!
  • 打赏
  • 举报
回复
lzzguolx 2004-05-09
循环完后再post
  • 打赏
  • 举报
回复
Kaykay 2004-05-09
你的数据是不是在一个DBGrid里显示出来的?如果是的话,我有一个技巧可以解决这个速度问题。
  • 打赏
  • 举报
回复
138075 2004-05-09
要按 00001-00002-00003-00004-.....-20000的顺序啊
  • 打赏
  • 举报
回复
qizhanfeng 2004-05-08
“00001”-“20000”要写入的数据有规律吗
  • 打赏
  • 举报
回复
138075 2004-05-08
to 飙风

你的这段程序写的漏洞百出,我怎么给分啊?

close......open呢????
append ???? 添加???我要的是edit
while not eof do ???? 这样比蜗牛都慢,我就是不想要这样扫描的方法
  • 打赏
  • 举报
回复
bf74011 2004-05-05
很简单,可以用批处理嘛以adotable为例
with adotable1 do
begin
close;
LockType:=ltBatchOptimistic;
CursorType:=ctkeyset;
while not eof do
begin
append;
fieldbyname('编号').asstring:=....
next;
end;
label1.Caption:='共导入 '+inttostr(RecordCount)+' 条记录'; //更新耗时,显示记录数
label1.Refresh;
UpdateBatch;
end;


一定要给分哦……
  • 打赏
  • 举报
回复
bsmqu 2004-05-02
那怎么样才能先存到内存,再一起更新
  • 打赏
  • 举报
回复
hewei2003 2004-05-02
写过存储过程试试看呢
  • 打赏
  • 举报
回复
w78z 2004-05-02
批处理
  • 打赏
  • 举报
回复
capoatguitar 2004-05-02
不管什么数据库让数据库来完成这个操作,应用程序调20000次,太慢了,
  • 打赏
  • 举报
回复
capoatguitar 2004-05-02
写个存储过程调用游标,
  • 打赏
  • 举报
回复
138075 2004-05-02
如果是ACCESS数据库呢?没存储过程的
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
数据库相关
加入

2462

社区成员

Delphi 数据库相关
申请成为版主
帖子事件
创建了帖子
2004-05-01 07:04
社区公告
暂无公告