我用dbexpress+sqlserver按钮代码:
simpledataset1.active:=true;在simpledataset1的afterpost事件里代码:
edit1.text:=inttostr(simpledataset1.recordcount);在simpledataset1的aftergetrecords事件里代码:
if (simpledataset1.active=true) then
  edit1.text:=inttostr(simpledataset1.recordcount);现我将simpledataset1的packetrecords设为下列值时,点击按钮,edit里显示如下:
packetrecords     edit1.text(当前用户端的记录数目)
     1                4
     2                4
     3                6
     4                4
     5                5
以后edit1.text的值都与packetrecords值相同问题一:为什么当packetrecords的值为1、2、3时,其值不与edit1.text(当前用户端的记录数目)的值相等?问题二:按理如果我们将packetrecords设为10时,当点击navigator向下浏览数据时,便会发现当浏览第11个记录时,
simpledataset1会再从数据源自动取得下一个数据封包,此时edit1.text应为20,但实际操作时,此时edit1.text
并不为20,依然为10,在当继续向下浏览数据致第21个时,edit1.text才变为20,这是怎么回事呢?百思不得其解,请大鸟们帮帮忙!感谢!

解决方案 »

  1.   

    1)很显然,你有DBGRID,而DBGRID不是只显示一条(我猜测是显示4条),所以为了需要,Delphi会自动Fetch Rerords,知道满足DBGrid的显示需要。所以上述结果正常。
    2)这个问题比较蹊跷,可能是取了数据后,没有触发相应的事件(???)。否则不应该这样。
      

  2.   

    chechy,你能帮我在你机子上试试吗?看看结果是否与我一样,非常感谢!
      

  3.   

    抱歉,Borland公司打击盗版,俺的机器不能安装的。(等Borland发给我正版的,我在安装)
    我现在判断第二个问题应该是你触发的时机不对,我以前也做过MIDAS的东东,RecordCount是好的。
      

  4.   

    我们公司收到太多的律师信了,公司严令任何人的机器禁止安装任何Borland公司的软件。
      

  5.   

    哦,有趣。chechy大鸟,机会难得,能给小弟一些建议吗?
    我想成为一个Delphi程序员(偏数据库),现应当致力于哪方面的学习呢?即哪方面的学习比较有好的发展前景?