读书人

在导入很多数据的过程中, 怎么在某一个

发布时间: 2012-10-18 13:46:55 作者: rapoo

在导入很多数据的过程中, 如何在某一个地方显示 已导入 xxx条 信息?
在导入很多数据的时候, 窗口一般会处于假死状态, 此过程中, 如何在某一个地方显示 已导入 xxx条 信息...

没多少分了, 谢谢每一位路过和回帖的前辈!!


[解决办法]
使用线程导入,窗体就不会假死状态了,除了显示导入的条数外,还可用进度条表示进度。


[解决办法]
用线程导入或者用最简单的进度条ProgressBar
[解决办法]
用线程不会卡,导入的时候记录下已导入的条数,然后设置进度条进度,或者通过设置一个label的caption来显示处理条数
[解决办法]
弄个代码来学习一下呀
[解决办法]
如果你觉得线程麻烦,可以这样做:
label1.caption := '正在处理……';
for i := 1 to 2000 do
begin
label1.caption := '处理中,' + x + '/2000';
qry.sql.claer;
qry.sql.add('insert ...');
qry.execsql;
application.processmessages;
end;
[解决办法]
在代码中用加上Application.ProcessMessages应该可以
但最好是用线程
[解决办法]
循环内加一个application.processmessages;可以借助windows自己去释放资源,这样就不会卡死了,还能看到进度条,如:
while not Eof do
begin
vTempChildNodeL := cxTL_Main.AddChild(_TempParentNodes);
vTempChildNodeL.Values[cxTL_Col_SubCode.ItemIndex] := FieldByName('SubjectCode').AsString;
vTempChildNodeL.Values[cxTL_Col_SubName.ItemIndex] := FieldByName('SubjectName').AsString;
vTempChildNodeL.Values[cxTL_Col_SubPlan.ItemIndex] := FieldByName('vM_SubIn').AsFloat;
vTempChildNodeL.Values[cxTL_Col_SubOut.ItemIndex] := FieldByName('vM_SubOut').AsFloat;
vTempChildNodeL.ImageIndex := 2 ;
vTempChildNodeL.SelectedIndex := 3 ;
v_TempPlan := v_TempPlan + FieldByName('vM_SubIn').AsFloat;
v_TempOut := v_TempOut + FieldByName('vM_SubOut').AsFloat;
Application.ProcessMessages;//这里可以释放资源
Next;
end;

读书人网 >.NET

热点推荐