做东西遇到问题了1.dbgrideh的checkbox问题。我百度使用了数据库新增bit列,但是在全选,反选的时候,发现操作很慢procedure Tmain.RzToolButton5Click(Sender: TObject);
var
ICount,I:Integer;
begin
ADOQuery1.First;
Icount:=DbGrideh1.DataSource.DataSet.RecordCount;
For I:=0 to Icount-1 do begin
ADOQuery1.Edit;
ADOQuery1.FieldByName('CheckBox').Text:='True';
ADOQuery1.Post;
ADOQuery1.Next;
end;
end;
显然 大数据量的时候,做全选会很麻烦。不知道到哥哥姐姐们有什么方法,求指点。最好是能让DBGRIDEH有个checkbox,不读取数据库。类似原生checkbox那样 if XXX:=true没有的话,是否能给个高效率的思路或者代码更好!2.dbgrideh如何导入一个excel呢。就是把dbgrideh导出的excel再导入回去。同时问题也来了。不知道他的导入到dbgrideh是追加的还是覆盖的。。也请大家帮帮忙吧。
搞定了请大家吃饭呢!
var
ICount,I:Integer;
begin
ADOQuery1.First;
Icount:=DbGrideh1.DataSource.DataSet.RecordCount;
For I:=0 to Icount-1 do begin
ADOQuery1.Edit;
ADOQuery1.FieldByName('CheckBox').Text:='True';
ADOQuery1.Post;
ADOQuery1.Next;
end;
end;
显然 大数据量的时候,做全选会很麻烦。不知道到哥哥姐姐们有什么方法,求指点。最好是能让DBGRIDEH有个checkbox,不读取数据库。类似原生checkbox那样 if XXX:=true没有的话,是否能给个高效率的思路或者代码更好!2.dbgrideh如何导入一个excel呢。就是把dbgrideh导出的excel再导入回去。同时问题也来了。不知道他的导入到dbgrideh是追加的还是覆盖的。。也请大家帮帮忙吧。
搞定了请大家吃饭呢!
解决方案 »
- delphi生成的可执行文件,在其它目录无法设断点调试,有解决方法吗?
- 关于treeview的指针问题?
- 求和
- 散分,去旅游,各位有何介绍?D友,可以组团呀。。。。。。。。。。
- 难度很大的问题?up有分!急!!!
- 如何在用SHOWMESSAGE()的时候,总有一个标题‘PROJECT1’出来?
- ◆关于delphi中vcl消息机制心得及其疑问◆
- 打印的问题
- 如何获取网站页面的内容?
- 希望结交一些热忠于在网上收集各种资料,并愿意与我交换个人资料的朋友(化了9个月时间已下载了4000M文档,8万个贴子,500个例程),请留下你的地址.
- delphi浮点数的恶心问题
- idftp 怎样开发通过代理上网传输文件。。急急急
uese
DBGridEhImpExp;
这个单元中有一个函数SaveDBGridEhToExportFile,自己研究一下吧
这几个函数估计够你用了,导入导出都有了
procedure SaveDBGridEhToExportFile(ExportClass: TDBGridEhExportClass;
DBGridEh: TCustomDBGridEh; const FileName: String; IsSaveAll: Boolean);
procedure WriteDBGridEhToExportStream(ExportClass: TDBGridEhExportClass;
DBGridEh: TCustomDBGridEh; Stream: TStream; IsSaveAll: Boolean);procedure LoadDBGridEhFromImportFile(ImportClass: TDBGridEhImportClass;
DBGridEh: TCustomDBGridEh; const FileName: String; IsLoadToAll: Boolean);
procedure ReadDBGridEhFromImportStream(ImportClass: TDBGridEhImportClass;
DBGridEh: TCustomDBGridEh; Stream: TStream; IsLoadToAll: Boolean);
try
修改操作
finally
EnableControls;
end;全选的时候不要让DBGridEh实时感知会快不少。
我是这样做的:
//检查SQLSERVER数据库中有没有[EXCEL人员表#]没有则建立
//ACCESS数据库连接 //Sessions.Sessions[0].Databases[0].Params.Values[]
//BDE会话,获取当前连接数据库控件的信息 //导入到SQLSERVER中临时表 //列出不能导入的人员信息 //去重复检查 //把信息增加到要导入的表(EXCEL人员表# --> 要导入的表)
其实,不使用原生的checkbox也是可以的,速度也不会慢,可能是处理的不好,所以会造成速度很慢,我感觉
只要数据没有几万行,速度应该不会感觉怎么慢;楼上有位朋友已经说了不部分了,我下面再补充一下吧:1、让感知控件和数据集脱离,完成后在恢复,这个很重要; ADOQuery.DisableControls;
try
//你原来的代码
finally
ADOQuery.EnableControls;
end;2、暂时关闭影响ADOQuery速度的几个事件,完成后恢复,思路同第一个,比如:AfterScroll事件等,比较影响速度;
ADOQuery.DisableControls;
ADOQuery.AfterScroll := nil;
try
//你原来的代码
finally
ADOQuery.EnableControls;
ADOQuery.AfterScroll := ADOQueryAfterScroll;
end; 如果还有其他事件处理是一样的。
如果不明白可以加入QQ高级群:9642802
http://blog.csdn.net/suiyunonghen/archive/2009/05/21/4207564.aspx
有详细代码