执行一条Select语句,如果返回的结果有上万条,TQuery是如何保存这些数据的
1、全部取到本地:好象不太可能
2、每次只取一部分:TQuery.Next容易实现,但TQuery.Prior呢?总不能再执行一次Select吧
3、?
...
还请高手指教,分不够可以加,但第一次只能给100分
在此谢过了

解决方案 »

  1.   

    就是全部取到本地,不过你若是编midas,用dataprovider的话就可以控制存取数量了。
      

  2.   

    不过可以通过select top N语句实现类似功能
      

  3.   

    Cache size来控制+select top N
      

  4.   

    执行时,会在本地创建一个临时文件,非不得已,一般均通过where加限制条件,返回有限数据,如果必须操作一个大的表,也可以考虑使用table来操作数据。
      

  5.   

    设置BlockReadSize,每次从服务器取多少条纪录
    当BlockReadSize<=0时,执行TQuery将会把所有Select出来的记录取过来,
    但BlockReadSize >0 时,则第一次取 BlockReadSize条纪录放到内存中,如果
    不断的TQuery.Next,到了BlockReadSize个后,就再去BlockReadSize条...
    以此类推,如果是TQuery.Prior,由于已经取到内存,则会直接读取内存中的。
    更具体的,看帮助吧。
      

  6.   

    用QUERY+TBATCHMOVE生成临时数据库的方法解决。
      

  7.   

    我只是想了解TQuery的处理方式
      

  8.   

    放在内存中,好像是以Paradox格式存放的。
      

  9.   

    有谁能解释一下TQuery是怎么做的么?
      

  10.   

    呵呵,blueshrimp还是很有个性的^_^