procedure TForm1.Button1Click(Sender: TObject);
begin
 with query1 do
 begin
   Close;
   SQL.Clear ;
   SQL.Add('select count(distinct sex) from student.db');
   SQL.Add('where sex=:sex' );
   ParamByName('sex').AsString := Trim(edit1.text);
   Open;
 end;
   label1.Caption := query1.Fields[0].value;
end;我想要得到的答案是有4条记录的,可label1.caption显示出来的是1,怎么回事?

解决方案 »

  1.   

    你这句SQL,只能出一条记录。
      

  2.   

    SQL.Add('where Trim(sex)=:sex' );不要发内容相同的帖子。
       
    ————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  3.   

    sql.add('select count(sex) from student.db where sex =:sex)
      

  4.   

    你的程序有问题。
    应该是这样在对参数赋值之前,对参数的类型进行说明:
    ParamByName('sex').datetype:=asstring;
    还有你的SQL语句有问题:
    SQL.Add('select count(distinct sex) from student.db');
    distinct sex是区分不同的sex,而后面有对sex指定了,所以这里只有一条,要得出你的结果,应去掉distinct
      

  5.   

    和你的差不多
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     with query1 do
     begin
       Close;
       SQL.Clear ;
       SQL.Add('select count(sex) as num from student.db');
       SQL.Add('where sex=:sex' );
       ParamByName('sex').datetype:=Asstring; //假如sex就string型的
       ParamByName('sex').AsString := Trim(edit1.text);
       Open;
     end;
       label1.Caption := query1.fieldbyname('num').asstring;
    end;