表结构如下:
用户Id,密码
正确的用户名和密码分别是'38017'和'38017',我想测试一下密码不对的情况
adoquery控件的sql属性写了:
select count(*) from userinfor where (UserID='38017')and(PassWord='12')我在SQL的查询分析器里面执行结果是0,但是程序代码里用
  loginquery.Close;
  loginquery.Prepared:=true;
  loginquery.Open;
  showmessage(inttostr(loginquery.RecordCount));showmessage对话框的属性竟然是1???!!!奇怪死了。请大峡们指正,我哪里错了啊!!!

解决方案 »

  1.   

    select count(*) from xxxxxxx
    返回的 RecordCount永远是1有一条记录, 1个字段, 字段值是0你需要的应该是  ShowMessage(IntToStr(loginquery.Fields[0].AsInteger));
      

  2.   

    loginquery.Fields[0].AsInteger指的是哪个属性啊???我的思路是用户名和密码都正确的话。查询的结果数目是1,不然是0。
      

  3.   

    如果查到了就会是1,如果查不到就会是0,count(*)总是会有个返回值的
    那么,你的这个查询永远都会返回一条记录,记录的值不是1就是0,那你取得的RecordCount当然就是1了,这个1是指记录条数,而不是你查出来的那个值....一楼给出的是取得那个字段的值是多少...
      

  4.   

    是这样的,包括你用sum(),也是一样的。如果你要查密码用户对否,可以写select * from userinfor where UserID='38017' And PassWord='12'loginquery.Open;然后看loginquery.RecordCount的值,不为0,则是查询成功了的。
      

  5.   

    4楼的兄弟。
    如果用户密码错误的话用select * from userinfor where UserID='38017' And PassWord='12'结果showmessage(inttostr(loginquery.RecordCount));是-1。奇怪的是用户密码正确
    select * from userinfor where UserID='38017' And PassWord='38017'
    结果showmessage(inttostr(loginquery.RecordCount));也是-1。用recordcount有问题啊!!!!!!!!!!!
      

  6.   

    我觉得奇怪的是RecordCount返回的是实际记录数-1