我在ADOQuery写的SQL语句是对的,可是怎么就没有数据在DBGrid中显示!!!是怎么回事啊!!!那个朋友还能帮忙解决一下的啊!

解决方案 »

  1.   

    ADOQuery,和一个DAtasurce相连了吗,DBGrid和这个DAtasurce相连了吗?
    ADOQuery中的语句是select语句吗
      

  2.   

    你有没有写ADOQUERY.OPEN;啊?
    还有DBGRID的DATASOURCE有没有设?
    。。
      

  3.   

    如果你的dbgrid里的column是自己设的,一定要和adoquery的fields联系起来!
      

  4.   

    代码如下:
    DM.pclassADOQ.Close;
    DM.pclassADOQ.SQL.Clear;
    DM.pclassADOQ.SQL.Add('select CNo,CName,Ccount,power from Classroom  where power=:power and Ccount>:Ccount');     
    DM.pclassADOQ.Parameters.Parambyname('power').Value:=DM.CourADOQ.FieldValues['CPower'];
    DM.pclassADOQ.Parameters.Parambyname('Ccount').Value:=DM.CourADOQ.FieldValues['StuCount'];
    DM.pclassADOQ.Active:=true;
      

  5.   

    Ccount>:Ccount  
    什么意思?
      

  6.   

    就是收索的Ccount字段的值要大于DM.CourADOQ.FieldValues['StuCount']的值啊!
      

  7.   

    将sql 语句复制到sql server 中运行以下,看看有没有错误。
      

  8.   

    sql 语句是没有错误的!一开始我把那段SQL语句放到ADOQuery里,不在程序里写DM.pclassADOQ.SQL.Add()加载SQL就可以的,能在DBGrid中正常显示数据的啊!
      

  9.   

    你stepbystep调一下看看,有没有问题啊?add watch 看值
      

  10.   

    DM.pclassADOQ.Close;
    DM.pclassADOQ.SQL.Clear;
    DM.pclassADOQ.SQL.Add('select CNo,CName,Ccount,power from Classroom  where power=:power and Ccount>:Ccount'); 
        DM.pclassADOQ.Parameters.Refresh
    DM.pclassADOQ.Parameters.Parambyname('power').Value:=DM.CourADOQ.FieldValues['CPower'];
    DM.pclassADOQ.Parameters.Parambyname('Ccount').Value:=DM.CourADOQ.FieldValues['StuCount'];
    DM.pclassADOQ.Active:=true;
    试试看行不行。
    因为你那两个参数power和Ccount在运行时还没有产生,所以无法执行。
      

  11.   

    不行的话,你就用DM.pclassADOQ.Parameters.Add吧
      

  12.   

    DM.pclassADOQ.Parameters.Refresh
    加这句话不行的,反而出现错误了啊用DM.pclassADOQ.Parameters.Add怎么加
    这位朋友还能给段代码我看看的啊!
      

  13.   

    还有就是我在执行这段代码的时候!
    DM.pclassADOQ.Close;
    DM.pclassADOQ.SQL.Clear;
    DM.pclassADOQ.SQL.Add('select CNo,CName,Ccount,power from Classroom  where power=:power and Ccount>:Ccount');     
    DM.pclassADOQ.Parameters.Parambyname('power').Value:=DM.CourADOQ.FieldValues['CPower'];
    DM.pclassADOQ.Parameters.Parambyname('Ccount').Value:=DM.CourADOQ.FieldValues['StuCount'];
    DM.pclassADOQ.Active:=true;我在下面使用showmessage(inttostr(DM.pclassADOQ.RecordCount));
    结果是返回0;
    我想应该是pclassADOQ的问题!可就是不知道出那里!
      

  14.   

    不好意思,错了!
     应该是DM.pclassADOQ.Parameters.AddParameter
      参考help文档:
    with ADOQuery1.AddParameter do begin
      DataType := ftString;
      ..Direction := pdInput;
      Value := 'malathion';
    end;
      就是在SQL.Add()后面把你的那两个参数加进去后再执行 
    DM.pclassADOQ.Parameters.Parambyname('power').Value:=DM.CourADOQ.FieldValues['CPower'];
    DM.pclassADOQ.Parameters.Parambyname('Ccount').Value:=DM.CourADOQ.FieldValues['StuCount'];
    DM.pclassADOQ.Active:=true;
      

  15.   

    to :Shiyl(云淡风清) 把你的QQ给我,还行啊!
      

  16.   

    好像ADOQuery中没有AddParameter参数的吧
      

  17.   

    不好意思,我没有QQ :)
    我的经验告诉我,你在一开始把那段SQL语句放到ADOQuery里,不在程序里写DM.pclassADOQ.SQL.Add()加载SQL就可以的,能在DBGrid中正常显示数据!
        那么可能就是你的参数,在运行时还没有创建,所以要在用之前先创建。
        具体我没有试过,你可以试试这个
    ADOQuery1.Parameters.Items[0]:= ADOQUERY1.Parameters.ParamByName('power');
    ADOQuery1.Parameters.Items[1]:= ADOQUERY1.Parameters.ParamByName('Ccount');  
      

  18.   

    DM.pclassADOQ.Close;
    DM.pclassADOQ.SQL.Clear;
    ADOQuery1.Parameters.Items[0]:= ADOQUERY1.Parameters.ParamByName('power');
    ADOQuery1.Parameters.Items[1]:= ADOQUERY1.Parameters.ParamByName('Ccount');  
    DM.pclassADOQ.SQL.Add('select CNo,CName,Ccount,power from Classroom  where power=:power and Ccount>:Ccount');     
    DM.pclassADOQ.Parameters.Parambyname('power').Value:=DM.CourADOQ.FieldValues['CPower'];
    DM.pclassADOQ.Parameters.Parambyname('Ccount').Value:=DM.CourADOQ.FieldValues['StuCount'];
    DM.pclassADOQ.Active:=true;是这样吗?