为什么我的SQL 2K中一个表中有Text字段时,Query返回的RecordCount是-1,总数据可以读出来吗?(50)

  • 主题发起人 主题发起人 ronaldowyl
  • 开始时间 开始时间
R

ronaldowyl

Unregistered / Unconfirmed
GUEST, unregistred user!
用Select 语句,如果选择了Text字段,则TQuery返回的RecordCount为-1; 如果select 没有选择Text字段,TQuery就能返回正确的RecordCount; 表: Create table test( test1 char(10), test2 text ); 然后:insert test values('123','456') 执行:select * from test 哪位大虾帮忙分析一下?
 
经测试没有发现你说的问题with adoquery1 do begin Close; Sql.Clear; Sql.Add('select test1,test2 from test '); try Open; except end; ShowMessage(IntToStr(ADOQuery1.RecordCount));有一条记录阿。
 
由于BDE在取数据的时候,并不是把所以后台数据都取出来,因此并不知道查询结果总共有多少条记录,所以recordcount就返回-1。这个和数据库有关,不是你程序的问题,如果把你的数据库更改为paradox,相同的代码运行的recordcount结果肯定就不同了。To 李翔鹏:你用的是ADO,他用的是BDE
 
有没有可能在tquery的事件中写一些代码而不更改数据库和bde?
 
也不要用那个findfirst和findlast,我测试了,用findlast会读出总数,但是查询结果会变得很慢!
 
findlast执行完后,相当于已经把符合条件的所有记录都从数据库查询出来,拉到内存中去了,所以用Last过程也可以。没有什么好的办法。除非你用2个Query,第一个查询数据不包含text字段,第二个query作为第一个的从表,只查询显示text字段。
 
后退
顶部