sql语句问题(高手帮帮忙呀!!!急。。。。只有这么多分了)(50分)

  • 主题发起人 主题发起人 igod
  • 开始时间 开始时间
I

igod

Unregistered / Unconfirmed
GUEST, unregistred user!
我需要动态查找,但是报错,高手看看是怎么回事?
var str:string;
flag:integer;
begin
flag:=0;
str:='';
coursequery.Active:=false;
with coursequery do
begin
databasename:='login';
close;
sql.Clear;
str:=str+'select * from t_score';
if idedit.Text<>'' then
begin
str:=str+' where xszh= '+idedit.Text;
flag:=1;
end;
if combobox1.Text<>'' then
begin
if flag=0 then str:=str+' where '
else
str:=str+' and ';
str:=str+' term= '+combobox1.text;
flag:=2;
end;
if bjedit.Text<>'' then
begin
if flag=0 then str:=str+' where '
else
str:=str+' and ';
str:=str+' bj= '+bjedit.Text+#39;
end;
sql.Add(str);
prepare;
open;
end;
 
错误提示是什么?
 
如果xszh字段是字符串,则应该这样:
str:=str+' where xszh= '''+idedit.Text + '''';
其他类似语句一样。
 
错误提示:could not find object
 
mytree老兄,那句编译运行都可以的,就是再加上后两个查询条件时出错
 
你的写法是有问题正如mytree所说的一样你改过再试一试。
 
改完以后这回倒好,单个查询没有问题,就是动态组合到一块就报错,
总是‘unexcept end of command'
 
看得眼睛好累呀改成灰色吧
 
你跟踪一下到这一步sql.Add(str);
看一看str等于什么,看看语法是否正确?
 
同意hua8hua.不过应从不同的情况来测试,显示一下str.
 
你的下述两个分支语句结束方式不一样。
str:=str+' term= '+combobox1.text;

str:=str+' bj= '+bjedit.Text+#39;

请查之。
 
试试用动态参数
if idedit.Text<>'' then
begin
str:=str+' where xszh=:tempParam'
parambyname('tempParam').value:= idedit.Text;
end;

注意参数的数据类型,若非string ,则注意转换;
例:parambyname('tempParam').asinteger:= strtoint(idedit.Text);

 
接受答案了.
 
后退
顶部