或许有点难度哦~(100分)

  • 主题发起人 主题发起人 119110
  • 开始时间 开始时间
1

119110

Unregistered / Unconfirmed
GUEST, unregistred user!
当执行 insert into bb select * from aa 时,如果aa表的记录有几万条或更多时,
这个过程可能是比较慢的。我的问题是:有什么办法能显示当前插入的是哪条记录,
就象windows的拷贝一样,或者能用进度条形象的显示进度。
 
除非你不用此语句,改用循环SQL语句,否则不可能提供当前的状态,数据库引擎不
提供这功能!
 
不可能,除非自己一条条插入
-----
http://www.8421.org
 
这样做不仅不仅无法显示进度,而且有可能耗尽会滚段资源。
如果记录数较多,一定要取循环方式。
 
循环的效率比直接插入高么?
 
我想这样的问题没有必要去仔细钻研,因为没有实际应用的价值,即使经过了一翻周折
搞定了也是在牺牲效率的前提下。
你的用户会关心你的这个功能吗,反正我不会关心,即使你做的比较友好的话也不需要
这样,只需要光标的漏斗提示就已经可以了况且数据库的这种操作本来就是又光标提示的。
 
to 119110:
开个县城显示个小动画和进度,就像copyfile那种,用进度条也可以啦,
当前进度的显示慢慢加,1%->2%->3%-。。。->99%,好,就停在99%不要动了,
当然你也可以停在95%...。最后插入完成后显示100%,等待半秒一秒的让用户
看到。就这样骗过去了,效果还不错。
 
如果你用ADO,我的同事说,很简单。但我不清楚。
如果你用BDE,那我倒试过,因为BDE有回调函数,而且我试过。
1。先定义一个回调函数:
function MyCallBackFunc(ecbType:CBType;iClientData:LongInt;pCbInfo:pcbPROGRESSDesc):CBRType;stdcall;
2。注册回调函数:
Check(DbiRegisterCallBack(nil,cbGENPROGRESS,0,sizeof(cbPROGRESSDesc),@cbInfo,@MyCallBackFunc));
3。执行查询。
4。注销回调函数(千万别忘了这一步哦!):
Check(DbiRegisterCallBack(nil,cbGENPROGRESS,0,sizeof(cbPROGRESSDesc),nil,nil));
 
Kisber兄请给出个简单的例子好么?包括需要引用哪个单元。谢了。
 
多人接受答案了。
 
后退
顶部