日期:2014-05-17  浏览次数:20626 次

用Sql.add()时候碰上的问题
在表A中两个字段size1和size2都为数字类型
现在要在edit1中输入一个数字,然后取值在上面两字段间的那一行数据
var
  Str:string;
begin
  with data.AQ1 do
  begin
  close;
  Sql.Clear;
  Sql.Add('Select * from A where size1<='''+Edit1.text+''' and size2>'''+Edit1.text+'''');
  open;
  Str:=data.AQ1.Fields[0].AsString;
  end;
end;

问题是,where后面的语句比较老是出问题,edit中的是字符串,但是数据库中的字段是数字类型,请问我应该如何解决呢?

------解决方案--------------------
Delphi(Pascal) code

var
  Str:string;
begin
  with data.AQ1 do
  begin
  close;
  Sql.Clear;
  Sql.Add('Select * from A where size1<='+Edit1.text+' and size2>'+Edit1.text);
  open;
  Str:=data.AQ1.Fields[0].AsString;
  end;
end;

------解决方案--------------------
我不懂vb,但是我觉得你这样写不好,直接把语句放到存储过程调试好,前端执行存储过程就可以了。前端语言拼接会很痛苦。并且就算前端99%的sql都是调用存储过程,毕业后的公司全部都是全存储过程开发。虽然有点极端,但是目前为止我也没遇到过太多问题。