m:=edit1.Text;
     form1.adoQuery2.SQL.Clear;
     form1.ADOQuery2.SQL.Text:='select * from 收费表 where 医生姓名 = :ma and 收费编号 in (select 收费编号 from 收费表 where between :ss and :mm)'; 
     form1.ADOQuery2.Parameters.ParamByName('ma').Value:=m;
     form1.ADOQuery2.Parameters.ParamByName('ss').Value:=r1;
     form1.ADOQuery2.Parameters.ParamByName('mm').Value:=m1;
     form1.ADOQuery2.Open;
     form1.DBGrid1.Refresh;请问这个SQL语句该怎么改呀?

解决方案 »

  1.   

    form1.ADOQuery2.SQL.Text:='select * from 收费表 where 医生姓名 = :ma and 收费编号 in (select 收费编号 from 收费表 where (这里缺少字段) between :ss and :mm)';
      

  2.   

    該語句缺少查詢條件,在Where之後,between之前.另外,如果您的"SS","MM"若是時間的話,最好還是切換為:()>=ss and ()<=mm,會更好些.
    form1.ADOQuery2.SQL.Text:='select * from 收费表 where 医生姓名 = :ma and 收费编号 in (select 收费编号 from 收费表 where (條件) between :ss and :mm)';
      

  3.   

    我把它改成var s1,s2,s3:string;
        t1,t2,t3:string;
        m:string;
        r1,r2:real;
        m1:real;
        q:TADOQuery;……………………
     m:=edit1.Text;
         form1.adoQuery2.SQL.Clear;
         form1.ADOQuery2.SQL.Text:='select * from 收费表 where 医生姓名 = :ma and 收费编号 in (select 收费编号 from 收费表 where 收费编号 between :ss and :mm)'; 
         form1.ADOQuery2.Parameters.ParamByName('ma').Value:=m;
         form1.ADOQuery2.Parameters.ParamByName('ss').Value:=r1;
         form1.ADOQuery2.Parameters.ParamByName('mm').Value:=m1;
         form1.ADOQuery2.Open;
         form1.DBGrid1.Refresh;编译时没有错误了,运行时显示:
    标准表达式中数据类型不匹配对了,我数据库中,医生姓名是字符型,收费编号是双精度型。
      

  4.   


         form1.ADOQuery2.SQL.Text:='select * from 收费表 where 医生姓名 = :ma and 收费编号 in (select 收费编号 from 收费表 where 收费编号  between :ss and :mm)';
      

  5.   

    这样一定行
    form1.ADOQuery2.SQL.Text:='select * from 收费表 where 医生姓名 = '''+ma+''' and 收费编号 in (select 收费编号 from 收费表 where 收费编号  between '''+ss+''' and  '''+mm+''')';
      

  6.   

    收费编号时双精度的?有没有搞错啊,那有这样的情况啊再说你就直接查
    form1.ADOQuery2.SQL.Text:='select * from 收费表 where 医生姓名 = :ma and 收费编号  between :ss and :mm 得了,还用查二边吗?join运算很费资源得
      

  7.   

    多谢 haitingr(haitingr) 成功了