一个表,数据量大概是2万条左右,用"select * from table"打开,总是报内存不足。用了视图之后,还是一样。原来是在delphi6下编译的,运行没有错误,后改用delphi5后出现这个问题,bde的补丁全部安装。代码如下:
w_main.sql2.close;
w_main.sql2.sql.clear;
w_main.sql2.sql.add('select count(id) from marcsub');
w_main.sql2.open;
marccou:=w_main.sql2.Fields[0].AsInteger;
w_main.marc.close;
w_main.marc.open;
w_main.sql1.DisableControls;
sqltext:=w_main.sql1.sql.text;
w_main.sql2.close;
w_main.sql2.sql.clear;
w_main.sql2.sql.add('select * from bookcou');
w_main.sql2.open;
marcnew:=w_main.sql2.fields[0].asinteger;
w_main.sql1.Close;
query2.close;
query2.sql.clear;
query2.sql.add('select * from bookmarc');这一句的时候报错。
query2.open;

解决方案 »

  1.   

    用BDE还不如用ODBC.ODBC都比BDE快.用ADO是一个好方式.如果是D6,还不如用dbExpress呢.
      

  2.   

    可以考虑下大家的意见了'select * from bookmarc'是否可以指定具体字段(如果不是返回所有字段的话)另外,这些数据集必须同时打开(在一段程序里)吗?
      

  3.   

    可以啊!'select a,b,c,d from  bookmarc'啊!
      

  4.   

    如果你有BDE或者是SQL2000那就不用测试了,我也碰到了这些问题.
    数据一多,肯定有问题.要不用ADO,要不用ODBC吧.
      

  5.   

    我改成interbase后没有任何问题了,真是怪事!不能理解
      

  6.   

    如果是sql2k,还是改用delphi6算了,免得找补厅
    改用ado后,没有这种问题!
      

  7.   

    前年就抛弃BDE了,因为我用sql server.bde支持不好!
      

  8.   

    本以为 BDE 是自家的,会好一点,结果……呵呵,老婆是人家的好呀