不知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 );
展开
 我来答
last_wolf1860
2012-04-19 · TA获得超过640个赞
知道小有建树答主
回答量:482
采纳率:100%
帮助的人:352万
展开全部
楼主的这句话有错误
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;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wolfy1016
2012-04-23 · TA获得超过244个赞
知道小有建树答主
回答量:353
采纳率:0%
帮助的人:291万
展开全部
程序感觉没问题。
你把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 ));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bfb9204
2012-04-18 · TA获得超过718个赞
知道小有建树答主
回答量:1008
采纳率:66%
帮助的人:443万
展开全部
传递参数的变量
更多追问追答
追问
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'));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fxtrade114
2012-04-18 · TA获得超过316个赞
知道小有建树答主
回答量:552
采纳率:100%
帮助的人:427万
展开全部
检查b,c,d的数据类型 .将错误提示发上来
更多追问追答
追问
错误提示
追答
根据错误提示,看来是无法读取 DBGrid1.Fields[15].AsString 报错,
你可以先用showmessage(DBGrid1.Fields[15].AsString ) ;试一下 ,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式