1.你没有建索引吗?10万记录虽不算什么,但也没必要一下子全显示(select)出来吧?
2.还是同1,在尽量少的记录集里locate
3.那是你自己没有将table控件的属性设置正确另:一般不用table而用adoquery

解决方案 »

  1.   

    回答  pbsql(风云):
      我没建索引? 本人开发软件已经7年, 不可能这么苯把????
    1. 当然不会显示10万记录,只是比出其慢. 有一个商品库,5000记录,客户喜欢打开
    浏览,然后更改一些数据, 或者定位某个记录修改数据. sql server 不支持seek的
    定位查询(我测试n次) .locate需要1秒时间, 客户很不满意! 3. 我花了2天时间, 比较ado的 cursorlocation, cursortype, locktype等对表操作的
    影响, 现在还记忆有新, sql server 表不支持打开状态下,改变索引!!!2. 关键问题你还没回答, 用什么方法解决 .seek 不到???
      

  2.   

    5000记录,为什么非要到结果集里seek呢?就是直接到数据库里查找那条记录也不至于用1秒的你是用bde而不是ado吧,建议用ado
      

  3.   

    尽量不要绑定到recordset 和 table 什么的
    .seek的速度也比较慢 我觉得还是用sql语句比较好
      

  4.   

    再回答  pbsql(风云):
      因为客户喜欢在grid里改数据,(客户是上帝啊!!!)所以他浏览住东西时,
    有时想在grid里定位某个记录,然后他可以对其,及其前后的记录处理.
    我也知道select 那记录很快, 可是如何能定位在grid里???
      所以客户用习惯一个东西, 新东西没有相类试的功能, 他是很反对新东西的!!!我当然在用ado,
      

  5.   

    tangyongyi(tyy) :dephi的grid我没有用过vb的我用过,有几种我忘记了:我开始用的是最简单的网格控件,先把记录取出来,然后用循环填写到网格里,用户仍然可以修改删除。从表面上看和绑定的没有任何区别。
    楼主有7年的开发经验,应该知道以前是没有绑定控件的。还有一点,无论数据库里的数据量无论有多大,但用户需要的只是很小的一部分,界面上显示的也只能是很小的一部分
      

  6.   

    我来说说:
    1.你没有必要一次把10万条记录全部取出,即使用户要用grid操作。可以采用分段存取的技术,这在delphi的技术资料中很易找到,不信,你到大富翁论坛上看看。
    2.难道你不知道ADO的缓存更新机制吗?你用的是普通的即时更新,当然会存在这个问题。用缓存更新就不会了。缓存更新是把用户需要的数据一次取到客户端,由客户进行编辑修改,最后才一次提交到后台。这样,用户编辑和查找的速度是很快的。
    3.排序问题:用一下第三方的grid控件,好多是支持按任意列排序的。建议你用adoquery,设置其更新模式为缓存更新。不要用adotable楼主搞了7年软件开发,难道都是在开发单机版吗?还是C/S的程序锻炼人啊。建议以后放弃单机版吧。