宏参数 &
第一步: 我们先在TFDQuery组件中写个SQL模板,内容为(不要点[执行]或者active,不会成功的):
SELECT &Fields FROM &Table &WhereWords
上面一共使用了三个宏参数,它们分别表示 字段(s),表名,以及条件语句.TFDQuery组件下的Macros宏属性,会自动添加以上三个参数(有几个就建几个)
第二步,调用.参考下面的举例,你甚至可以写出更复杂的多表联合查询,分组查询等.
procedure TForm1.搜索Click(Sender: TObject); begin with FDQuery1 do begin //关闭 Active := False; //设置动态参数 ,下面的赋值语句,等价于: MacroByName('(你设置的参数名)').AsRaw := XXX Macros[0].AsRaw := '物料代码,物料名称,规格型号,参考库存';//注意这里是可以添加多个字段的. 等价于 MacroByName('FIELDS').AsRaw:='xxxx'; Macros[1].AsRaw := '物料信息'; //等价于 MacroByName('TABLE').AsRaw:='xxxx'; Macros[2].AsRaw := 'WHERE 参考库存>0 AND 物料代码 like ' + ('%' + dxBarEdit1.Text + '%').QuotedString; //等价于 MacroByName('WHEREWORDS').AsRaw:='xxxx';
//激活 Active := True; //下面这两句看情况用 IcxCustomGridDataController(cxGrid1DBTableView1.DataController).DeleteAllItems; //CXGRID删除所有字段 IcxCustomGridDataController(cxGrid1DBTableView1.DataController).CreateAllItems(False); //CXGRID创建所有字段 end; end;
说白了,它就是在TFDQuery组件中先写个SQL模板,然后后期再完善这条SQL语句,使它能正常工作!
效果:
-------------------动态参数( : )------------------------------
SELECT 物料代码,物料名称 FROM 物料信息 where [物料代码] =:WHEREWords //注:有些数据库对中方字段不好友的情况下,需要加中括号
说明:
1.这个动态参数只能在where子句中使用(就我目前的认知,欢迎大佬指正.因为网站的资源太少了)
2.只适用于 where XXX= :XXXX 这种格式,不能像宏参数一样拼接字符串
3.不用加引号(QuotedString) ,NND就这个特性,玩得我不要不要的,一度怀疑自己写用法有问题!!
4.如果不是初次设置动态参数,你最好再确认一下params里面的参数是否对应得上,因为TFDQuery组件修改过后,里面的内容会变动.或者这样,先把params里的数据清空,然后双击打开TFDQuery组件,再修改,确定.这样就保证不会有问题了.
调用:
procedure TForm1.搜索Click(Sender: TObject); begin with FDQuery1 do begin //关闭 Active := False; Params[0].Value := dxBarEdit1.Text; // Params.ParamByName('WHEREWords').Value := dxBarEdit1.Text; //与上面一句等价 Active := True; //下面这两句看情况用 IcxCustomGridDataController(cxGrid1DBTableView1.DataController).DeleteAllItems; IcxCustomGridDataController(cxGrid1DBTableView1.DataController).CreateAllItems(False); end; end;
宏指令{id}
这个指令适用于字段上面,比如下面这条SQL
SELECT 物料代码,物料名称,参考库存 FROM 物料信息 where [物料代码]= :WHEREWords
有些数据库要求字段要加单引号,有些数据库要求加双引号,有些则不要加引号........如果你不了解的话,直接写成下面这样,包你没问题(事实上这种情况很少)
SELECT {id 物料代码 },{id 物料名称},{id 参考库存} FROM 物料信息 where 物料代码= :WHEREWords
FireDAC的宏指令,按功能大致上分上五种:字符宏,数值宏,日期宏,系统宏,转换宏 这些文档可能只有在官网才能找到了.只能说,能用,但基本上不会用(想用,但不会用; 会用,但有其他更好的方案),所以网上这方面的资料是相当少的!
标签:物料,AsRaw,delphi,FireDAC,TFDQuery,参数,where,id From: https://www.cnblogs.com/yoooos/p/17097465.html