求一个简单的查询问题:
现在有一个数据库表1,如下:
No   mmin    mmax     4     5     6      7   //标题,就是字段名,4/5/6/7表示精度
1     1      3.5     4.5   7.1   11     14  
2     3.5    6.3     5.6   9     14     20
3     6.3    10      7.1   11    18     25
……
现在要求用户输入m和精度值,然后根据m 与表中的mmin与mmax做比较【mmin<=m<=mmax】,然后根据
输入的精度值,比如为5,查出表中的数值(7.1),然后将这个数值赋值给一个Edit控件。
代码格式如下:
procedure TForm1.Button1Click(Sender: TObject);
var 
  m : Double;
  JD: Integer;
  SQLStr : String
begin
  //赋值
  m := StrToFloat(Edit1.txt);
  JD := StrToInt(Edit2.txt);
  //求SQL查询语句
  SQLStr := 'Select JD = :JD  Form Table1 Where min <=  :m  and  mmax  >=  :m';
  
  with Query1 do 
  begin
     close;
     SQL.Clear;
     SQL.Add(SQLStr);
     ParamByName('JD').AsString := IntToStr(JD);
     ParamByName('m').AsString := FloatToStr(m);
     prepare;
     Open;
  end;
 
  //显示查询出的精度数值
  Edit3.txt := Query1.ParamByName('JD').AsString;  
end;******************
请高手指点一下是那儿错了?

解决方案 »

  1.   

    字段名,4,5,6,7改掉,不要用数字。比如说,改成JD4, JD5...(以下以此为例)var
      JDStr, SQLStr: string;
      m: Double;
    begin
      m := StrToFloat(Edit1.txt);
      JDStr := Edit2.Text;
      SQLStr := 'Select JD' + JD + ' as JD Form Table1 Where :m between mmin and mmax';
      with Query1 do 
      begin 
        close; 
        SQL.Clear; 
        SQL.Add(SQLStr); 
        ParamByName('m').AsFloat := m;
        Open;
        if not IsEmpty then
          Edit3.Text := FieldByName('JD').AsString;
      end;
    end;
      

  2.   

    晕,不能编辑。应该是下面:
    字段名,4,5,6,7改掉,不要用数字。比如说,改成JD4, JD5...(以下以此为例)var
      JDStr, SQLStr: string;
      m: Double;
    begin
      m := StrToFloat(Edit1.txt);
      JDStr := Edit2.Text;
      SQLStr := 'Select JD' + JD + ' as JD Form Table1 Where :m between mmin and mmax';
      with Query1 do 
      begin 
        close; 
        SQL.Clear; 
        SQL.Add(SQLStr); 
        Parameters.ParamByName('m').Value := m;
        Open;
        if not IsEmpty then
          Edit3.Text := FieldByName('JD').AsString;
      end;
    end;