我用查询后有二W多条的数据用STRINGGRID显示竟然死机了,而且占用内存奇大!
有什么好的方法使STRINGGRID有DBGRID一样快,一样好!

解决方案 »

  1.   

    StringGrid 把所有内容都保存起来了。
    DBGrid 中保存显示的。谁可以一下看 2W个记录?
      

  2.   

    如果要用stringgrid显示大数据量,需要在后面跟StringGrid榜定一个dataset,dataset里面做数据分页显示,这样你的访问才会快。
      

  3.   

    应该可以取出,但是速度很慢
    我以前做过,再本机上测试,一次取了5万条,花了18秒,没怎么优化,但是没死机。。 我那台机器用了4年多了,ALTHRON1G+SDR256的
      

  4.   

    写的时候加 
    application.ProcessMessages
      

  5.   

    为什么要全部取出来!!呵呵,不明白!!!用SQL语句可以完成:思路:记录表中一ID值SQL SER:SELECT TOP 100 * FROM TABLENAME WHERE ID>0 第一次取SELECT TOP 100 * FROM TABLENAME WHERE ID>已下载的最大ID值; 第n次取Orcale :SELECT  * FROM (Select a.* ,RowNum r from TABLENAME A where Rownum>100) WHERE r.>0 第一次取SELECT  * FROM (Select a.* ,RowNum r from TABLENAME A where Rownum>100) WHERE r.>已下载的最大ID值; 第n次取写的简单,,,不好意思!!
      

  6.   

    然后,对分批数据加载到TSTRINGGRID上!!就可以和DBGRID比较了!!!
      

  7.   

    supervisors(一个惭愧的学生) :结果怎样?
      

  8.   

    我认为会死机是因为StirngGrid的重画,每次添加一条的时候,grid都会重画一次的,次数多了而且记录又多,会资源耗尽的。要手动防止stringgrid重画。
      

  9.   

    我的程序用StringGrid显示6万多数据都不会死。
    你的问题不在StringGrid,可能在你的查询上。
      

  10.   

    估计楼主的程序是不是读取数据后,显示在StringGrid的时候一直在等待?如果是这样,你可以用
    for i:=0 to xx do
    begin
      ...(//显示一条记录);  StringGrid1.update;
      Applicaton.ProcessMessages;end;