简单问题,请求帮忙解决!(50分)

  • 主题发起人 主题发起人 mtllyy
  • 开始时间 开始时间
M

mtllyy

Unregistered / Unconfirmed
GUEST, unregistred user!
在用QUERY控件的时候动态加入一个SQL语句,正确的语句如下:
select * from t1 where fnumber='01'
在=后面是用一个变量来传递,可能是01也可能是S1,为字符型
代码如下:
procedure Tfm_jscccx.Button2Click(Sender: TObject);
var s:string;
begin
s:=copy(edit1.text,1,2);
with query1 do
begin
close;
sql.clear;
sql.add('select * from t1 where fnumber='+s);
open;
end;
end;
以上变量S赋值以后为01,而不是'01',数据库中的字段类型为字符型,因为也存在S1,
在执行查询的时候总是报错。我知道动态生成的语句为:
select * from t1 where fnumber=01
是电脑把它当成数值型来用,只要把01改为'01'就OK!
我试了好久也不能把S赋值为'01','总是加不上去,不知道这个问题该怎么办啊?
请大家帮忙!!!
 
procedure Tfm_jscccx.Button2Click(Sender: TObject);
begin
with query1 do
begin
close;
sql.clear;
sql.add('select * from t1 where fnumber=:s');
ParamByName('s').AsString:=copy(edit1.text,1,2);
open;
end;
end;
 
procedure Tfm_jscccx.Button2Click(Sender: TObject);
begin
with query1 do
begin
close;
sql.clear;
sql.add('select * from t1 where fnumber=:s');
ParamByName('s').AsString:=edit1.text;
Prepare ;
open;
end;
end;


procedure Tfm_jscccx.Button2Click(Sender: TObject);
var s:string;
begin
s:=copy(edit1.text,1,2);
with query1 do
begin
close;
sql.clear;
sql.add('select * from t1 where fnumber='''+s+''''); //注意引号
open;
end;
end;
 
接受答案了.
 
应该为
s:String
sql.add('select * from t1 where fnumber='''+s+'''')
 
procedure Tfm_jscccx.Button2Click(Sender: TObject);
var str1:string;
begin
str1:=copy(edit1.text,1,2);
with query1 do
begin
close;
sql.clear;
SQL.Add(Format('select * from department where(fnumber=' + '''' + %s + '''' + ') ,[str1]));
open;
end;
end;
 
后退
顶部