我写了一个
select a.HOTELID,b.name,a.CHECKTYPE,a.CHECKWAY,a.CONTACTMAN,a.CONTACTDEPT,a.CONTACTPHONE,a.CONTACTTIME ,a.CONTACTEMAIL,a.FERIALFAX,a.FERIALFAXTYPE,TO_CHAR(a.FERIALEARLYFAXTIME,'HH24:MI:SS') FERIALEARLYFAXTIME,TO_CHAR(a.FERIALLASTFAXTIME,'HH24:MI:SS') FERIALLASTFAXTIME,a.FERIALINCLWEEKEND,a.HOLIDAYFAX,a.HOLIDAYFAXTYPE,TO_CHAR(a.HOLIDAYEARLYFAXTIME,'HH24:MI:SS') HOLIDAYEARLYFAXTIME,TO_CHAR(a.HOLIDAYLASTFAXTIME,'HH24:MI:SS') HOLIDAYLASTFAXTIME,c.name cityname from htl_i_checklivein a, htl_i_hotelinfo b, htl_b_city c where  a.hotelid = b.hotelid and b.cityid = c.id and b.name = '111'
在sqlplus中执行是取得了一行数据,可以在程序中
 if adoQ.RecordCount >0 then
begin
//
end  为什么RecordCount总是取得0呢,实际上我已取到一行数据呀
else
//

解决方案 »

  1.   

    取所在的行你要用TADOQuery的RecNo属性。
    例如:
    ShowMessage(IntToStr(self.ADOQuery1.RecNo));
    显示你当前行号。
      

  2.   

    在sqlplus中执行是取得了一行数据,可以在程序中
     if adoQ.RecordCount >0 then
    begin
    //
    end  为什么RecordCount总是取得0呢,实际上我已取到一行数据呀
    else既然recordcount等于0,自然代表没有返回结果。。在sqlplus中可以返回,那说明你的sql语句没问题,问题可能在于你使用delphi的时候,参数没有赋值正确,例如这里b.name = '111'
      

  3.   

    我就是把上面的SQL拿到程序中执行的。是跟踪得到的SQL,
      

  4.   

    你的SQL语句是如何执行的?你用TADOQuery.Active:=true;来执行一下试试。
      

  5.   

    偶是写了个function来调用的
    procedure dosql(str : String ; Query: TADOQuery; Status : smallint);
     begin
       Query.Connection :=dmHOTL0001M.dbHotel;
        with query do
        begin
          close;
          SQL.Clear;
          SQL.Add(str);
          Active := true;
          case status of
          0:
            begin
              try
               open;
              except
                showMessage('执行SQL失败,失败的SQL为:'+str);
              end;
            end;
          1:
            begin
               try
               execSql;
               except
                 ShowMessage('执行SQL失败,失败的SQL为:'+str);
               end;
            end;
          end;
        end;
     end;
      

  6.   

    active := true 时,recno还是为-1
      

  7.   

    你直接用窗体,并把sql语句写到sql属性里执行在试试。
    还有最好你加一个datasource和dagrid两个组件,可以看到结果集。
      

  8.   

    窗体上放一个ADOConnect,ADOQuery,datasource和dagrid这四个东西,在添加一个button按钮用于连接数据库和显示recno的结果。
      

  9.   

    问题要一步一步的赵,先用你那个sql语句在adoquery中试一下,连接dbgrid,看一下结果集。。首先确定你能查到数据。
      

  10.   

    dbgrid中没记录,怪了,但把这段sql拿到sqlplus中就可以查出一条记录
      

  11.   

    你用一个最简单的SQL,如select * from a 看一来是否可以得到数据。
      

  12.   

    adoQ.RecordCount本身就是所有显示的行数
      

  13.   

    adoQ.RecordCount本身就是显示的所有行数