不知delphi 'select * from 临时表 where 临时表.车牌号=:a' :a是什么意思?:a运行通过,b c d出现问题? 5
withADOQuery1dobeginclose;SQL.Clear;SQL.Add('select*from临时表where临时表.车牌号=:aand临时表.收货单位...
with ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('select * from 临时表 where 临时表.车牌号=:a and 临时表.收货单位=:b and (临时表.收货地址=:c and 临时表.时间=:d');
parameters.ParamByName('a').Value:=Trim(DBGrid1.Fields[0].AsString );
parameters.ParamByName('b').Value:=Trim(DBGrid1.Fields[15].AsString);
parameters.ParamByName('c').Value:=Trim(DBGrid1.Fields[10].AsString );
parameters.ParamByName('d').Value:=Trim(DBGrid1.Fields[1].AsString ); 展开
begin
close;
SQL.Clear;
SQL.Add('select * from 临时表 where 临时表.车牌号=:a and 临时表.收货单位=:b and (临时表.收货地址=:c and 临时表.时间=:d');
parameters.ParamByName('a').Value:=Trim(DBGrid1.Fields[0].AsString );
parameters.ParamByName('b').Value:=Trim(DBGrid1.Fields[15].AsString);
parameters.ParamByName('c').Value:=Trim(DBGrid1.Fields[10].AsString );
parameters.ParamByName('d').Value:=Trim(DBGrid1.Fields[1].AsString ); 展开
展开全部
楼主的这句话有错误
SQL.Add('select * from 临时表 where 临时表.车牌号=:a and 临时表.收货单位=:b and 临时表.收货地址=:c and 临时表.时间=:d');
把“临时表.收货地址”前面那个括号搞掉就OK了
简练一些的话还可以这么写
const sql_T:string = 'select * from 临时表 where 临时表.车牌号=%s and 临时表.收货单位=%s and 临时表.收货地址=%s and 临时表.时间=%s'
var mysql:string;
begin
mysql:=format(sql_T,[quotedStr(Trim(DBGrid1.Fields[0].AsString )),quotedStr(Trim(DBGrid1.Fields[15].AsString )),quotedStr(Trim(DBGrid1.Fields[10].AsString )),quotedStr(Trim(DBGrid1.Fields[1].AsString ))]);
with adoquery1 do
begin
close;
sql.text:=mysql;
open;
end;
end;
SQL.Add('select * from 临时表 where 临时表.车牌号=:a and 临时表.收货单位=:b and 临时表.收货地址=:c and 临时表.时间=:d');
把“临时表.收货地址”前面那个括号搞掉就OK了
简练一些的话还可以这么写
const sql_T:string = 'select * from 临时表 where 临时表.车牌号=%s and 临时表.收货单位=%s and 临时表.收货地址=%s and 临时表.时间=%s'
var mysql:string;
begin
mysql:=format(sql_T,[quotedStr(Trim(DBGrid1.Fields[0].AsString )),quotedStr(Trim(DBGrid1.Fields[15].AsString )),quotedStr(Trim(DBGrid1.Fields[10].AsString )),quotedStr(Trim(DBGrid1.Fields[1].AsString ))]);
with adoquery1 do
begin
close;
sql.text:=mysql;
open;
end;
end;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序感觉没问题。
你把SQL语句中的汉字都换成字母。
最少要把临时表用别名代替。
如:
SQL.Add('select * from 临时表 tmp where tmp.车牌号=:a and tmp.收货单位=:b and tmp.收货地址=:c and tmp.时间=:d');
原来中间还多个“(”
如果报错,再把你的
parameters.ParamByName('d').Value:=Trim(DBGrid1.Fields[1].AsString );
改成:parameters.ParamByName('d').Value:=strtodate(Trim(DBGrid1.Fields[1].AsString ));
你把SQL语句中的汉字都换成字母。
最少要把临时表用别名代替。
如:
SQL.Add('select * from 临时表 tmp where tmp.车牌号=:a and tmp.收货单位=:b and tmp.收货地址=:c and tmp.时间=:d');
原来中间还多个“(”
如果报错,再把你的
parameters.ParamByName('d').Value:=Trim(DBGrid1.Fields[1].AsString );
改成:parameters.ParamByName('d').Value:=strtodate(Trim(DBGrid1.Fields[1].AsString ));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
传递参数的变量
更多追问追答
追问
b c d怎么会出现错误?望解答
追答
改下写法试下
with ADOQuery1 do
begin
close;
parameters.ParamByName('a').Value:=Trim(DBGrid1.Fields[0].AsString );
parameters.ParamByName('b').Value:=Trim(DBGrid1.Fields[15].AsString);
parameters.ParamByName('c').Value:=Trim(DBGrid1.Fields[10].AsString );
parameters.ParamByName('d').Value:=Trim(DBGrid1.Fields[1].AsString );
open;
ADOQuery1 中
select * from 临时表 where 车牌号=:a
and 收货单位=:b
and 收货地址=:c
and 时间=:d
你原来的写法少了一个括号
('select * from 临时表 where 临时表.车牌号=:a and 临时表.收货单位=:b and (临时表.收货地址=:c and 临时表.时间=:d'));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
检查b,c,d的数据类型 .将错误提示发上来
更多追问追答
追问
错误提示
追答
根据错误提示,看来是无法读取 DBGrid1.Fields[15].AsString 报错,
你可以先用showmessage(DBGrid1.Fields[15].AsString ) ;试一下 ,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询