我是Delphi的新手,并收到了以下代码(遗漏了一些不相关的部分),我正试图了解它的作用:
object SelectCosts: TIBQuery
SQL.Strings = (
'SELECT * FROM costs '
'WHERE code = :code')
ParamData = <
item
DataType = ftUnknown
Name = 'code'
ParamType = ptUnknown
end>
end
在另一个文件中,使用该查询,但添加了查询中未定义的参数。
DM_HRV.SelectCosts.ParamByName('part').Value := 1;
此参数'part'
是否会改变所做的选择?换句话说:SQL查询是自动更改为以下内容吗?
'SELECT * FROM costs '
'WHERE code = :code'
'AND part = :part'
答案 0 :(得分:8)
这意味着可能在运行时更改SQL语句。因此,当使用该查询时,SQL已包含AND part = :part
。
如果SQL语句不包含此额外参数part
,则在分配ParamByName('part').Value := 1
时将引发异常。
我假设您没有混淆SelectCosts
引用(位于DM_HRV
而不是其他DM)。
答案 1 :(得分:4)
帖子中的以下语句未添加参数,它设置其值:
DM_HRV.SelectCosts.ParamByName('part').Value := 1;
要在运行时添加参数,请使用CreateParam,如下所示:
if DM_HRV.SelectCosts.Params.FindParam('Part') = nil then
DM_HRV.SelectCosts.Params.createParam(ftString, 'Part', ptInput);
查询不会自动修改,您必须自己修改。
在您的第一个片段中,未定义ParamType和InputType,您可以通过访问参数列表(Params)属性编辑器在IDE中更改它,并更新这些值。
答案 2 :(得分:0)
添加新参数不会更改查询。你必须自己做。