代码如下: 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;
ADOQuery中的语句是select语句吗
还有DBGRID的DATASOURCE有没有设?
。。
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;
什么意思?
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在运行时还没有产生,所以无法执行。
加这句话不行的,反而出现错误了啊用DM.pclassADOQ.Parameters.Add怎么加
这位朋友还能给段代码我看看的啊!
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的问题!可就是不知道出那里!
应该是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;
我的经验告诉我,你在一开始把那段SQL语句放到ADOQuery里,不在程序里写DM.pclassADOQ.SQL.Add()加载SQL就可以的,能在DBGrid中正常显示数据!
那么可能就是你的参数,在运行时还没有创建,所以要在用之前先创建。
具体我没有试过,你可以试试这个
ADOQuery1.Parameters.Items[0]:= ADOQUERY1.Parameters.ParamByName('power');
ADOQuery1.Parameters.Items[1]:= ADOQUERY1.Parameters.ParamByName('Ccount');
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;是这样吗?