三个表联接成一个adoqbase,运行时却提示无ta参数parameter ta not found,请帮我分析一下是什么原因?Thanks!
with AdoqBase do
begin
sql.Clear;
sql.Add('select storage.No,Materiel.name,materiel.spec,');
sql.Add('materiel.units,materiel.weight,materiel.PartNo,');
sql.add('materiel.ClientPartNo,storage.Num,storage.DepotNo,') ;
sql.add('Depot.DepotName from storage ');
sql.Add('left join Materiel on Storage.No=Materiel.No');
sql.Add('left join Depot on storage.DepotNo=Depot.DepotNo');
sql.Add('where storage.no=:ta');
Parameters.ParamValues['ta']:='S57701';
end;改为下面代码仍然提示:parameter ta not found
with AdoqBase do
begin
sql.Clear;
sql.Add('select storage.No,Materiel.name,materiel.spec,');
sql.Add('materiel.units,materiel.weight,materiel.PartNo,');
sql.add('materiel.ClientPartNo,storage.Num,storage.DepotNo,') ;
sql.add('Depot.DepotName from storage ');
sql.Add('left join Materiel on Storage.No=Materiel.No');
sql.Add('left join Depot on storage.DepotNo=Depot.DepotNo');
sql.Add('where storage.no=:ta');
Parameters.Refresh;
Parameters.ParamValues['ta']:='S57701';
end;再改为下面代码提示:列名'S57701'无效
with AdoqBase do
begin
sql.Clear;
sql.Add('select storage.No,Materiel.name,materiel.spec,');
sql.Add('materiel.units,materiel.weight,materiel.PartNo,');
sql.add('materiel.ClientPartNo,storage.Num,storage.DepotNo,') ;
sql.add('Depot.DepotName from storage ');
sql.Add('left join Materiel on Storage.No=Materiel.No');
sql.Add('left join Depot on storage.DepotNo=Depot.DepotNo');
sql.Add('where storage.no='+ 'S57701');
end;各位大侠,再帮忙啊,TKS!
with AdoqBase do
begin
sql.Clear;
sql.Add('select storage.No,Materiel.name,materiel.spec,');
sql.Add('materiel.units,materiel.weight,materiel.PartNo,');
sql.add('materiel.ClientPartNo,storage.Num,storage.DepotNo,') ;
sql.add('Depot.DepotName from storage ');
sql.Add('left join Materiel on Storage.No=Materiel.No');
sql.Add('left join Depot on storage.DepotNo=Depot.DepotNo');
sql.Add('where storage.no=:ta');
Parameters.ParamValues['ta']:='S57701';
end;改为下面代码仍然提示:parameter ta not found
with AdoqBase do
begin
sql.Clear;
sql.Add('select storage.No,Materiel.name,materiel.spec,');
sql.Add('materiel.units,materiel.weight,materiel.PartNo,');
sql.add('materiel.ClientPartNo,storage.Num,storage.DepotNo,') ;
sql.add('Depot.DepotName from storage ');
sql.Add('left join Materiel on Storage.No=Materiel.No');
sql.Add('left join Depot on storage.DepotNo=Depot.DepotNo');
sql.Add('where storage.no=:ta');
Parameters.Refresh;
Parameters.ParamValues['ta']:='S57701';
end;再改为下面代码提示:列名'S57701'无效
with AdoqBase do
begin
sql.Clear;
sql.Add('select storage.No,Materiel.name,materiel.spec,');
sql.Add('materiel.units,materiel.weight,materiel.PartNo,');
sql.add('materiel.ClientPartNo,storage.Num,storage.DepotNo,') ;
sql.add('Depot.DepotName from storage ');
sql.Add('left join Materiel on Storage.No=Materiel.No');
sql.Add('left join Depot on storage.DepotNo=Depot.DepotNo');
sql.Add('where storage.no='+ 'S57701');
end;各位大侠,再帮忙啊,TKS!
begin
sql.Clear;
sql.Add('select storage.No,Materiel.name,materiel.spec,');
sql.Add('materiel.units,materiel.weight,materiel.PartNo,');
sql.add('materiel.ClientPartNo,storage.Num,storage.DepotNo,') ;
sql.add('Depot.DepotName from storage ');
sql.Add('left join Materiel on Storage.No=Materiel.No');
sql.Add('left join Depot on storage.DepotNo=Depot.DepotNo');
sql.Add('where storage.no=:ta');
Parameters.Refresh; <-----没有打开数据集怎么能进行这样的操作?
Parameters.ParamValues['ta']:='S57701';
end;
TKS!
这样付值是不对的,因为引号的问题
可以这样写
sql.add(format(' where storage.no=''%s'' ',['S57701']));
也可以这样的
sql.Add('where storage.no='+ '''S57701''');
我没看出第一种方法的错误只看where前面应该有空格,
不过我常这样用的
Parameters.Parambyname('ta').value:='S57701'
p:TParameter;...... p:=ADOQuery1.Parameters.AddParameter;
p.Name:='ta';
p.DataType:=ftString;
p.Value:='aaa';这样试试看行不行
begin
sql.Clear;
sql.Add('select storage.No,Materiel.name,materiel.spec,');
sql.Add('materiel.units,materiel.weight,materiel.PartNo,');
sql.add('materiel.ClientPartNo,storage.Num,storage.DepotNo,') ;
sql.add('Depot.DepotName from storage ');
sql.Add('left join Materiel on Storage.No=Materiel.No');
sql.Add('left join Depot on storage.DepotNo=Depot.DepotNo');
sql.Add('where storage.no=:ta');
open;
Parameters.Refresh;
Parameters.ParamValues['ta']:='S57701';
end;
sql.Add('left join Depot on storage.DepotNo=Depot.DepotNo //这个也要');
sql.Add('where storage.no=:ta');
begin
sql.Clear;
sql.Add('select storage.No,Materiel.name,materiel.spec,');
sql.Add('materiel.units,materiel.weight,materiel.PartNo,');
sql.add('materiel.ClientPartNo,storage.Num,storage.DepotNo,') ;
sql.add('Depot.DepotName from storage ');
sql.Add('left join Materiel on Storage.No=Materiel.No');
sql.Add('left join Depot on storage.DepotNo=Depot.DepotNo');
sql.Add('where storage.no=:ta');
Parameters.ParamValues['ta']:='s57701';
end;
sql.Add('where storage.no='+ 'S57701');改成:
sql.Add('where storage.no=''S57701''');
Parameters.Parambyname('ta').value:='S57701'