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

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的形式实现?
...全文
174 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
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数据库呢?没存储过程的
加载更多回复(2)

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧