Delphi ADOQuery多个参数重复 改编技巧

今天看了多年前的一个帖子,发现回答不合理,有些还将其归为delphi的bug.其实主要是没有灵活应用参数。

ADOQUERY查询时,这样不行,结果不正确。 

WITH ADOQUERY1 DO 
BEGIN 
  CLOSE;SQL.CLEAR; 
  SQL.ADD('SELECT * FROM TABLE1 WHERE TA001=:MONTH AND TA002=:MONTH'); 
  PARAMETERS.ParamByName('MONTH').Value :=EDIT1.TEXT; 
  OPEN; 
END; 

改成如下就可以了。

WITH ADOQUERY1 DO 
  BEGIN 
  CLOSE;SQL.CLEAR; 
  SQL.ADD('SELECT * FROM TABLE1 WHERE TA001=:MONTH1 AND TA002=:MONTH2'); 
  PARAMETERS.ParamByName('MONTH1').Value :=EDIT1.TEXT; 
  PARAMETERS.ParamByName('MONTH2').Value :=EDIT1.TEXT; 
  OPEN; 
END; 

但对于非常多的参数的时候这样就麻烦了,还不如修改一下SQL语句

SELECT ProductId 产品编号, ProductName 产品名称, Place 生产厂, DM_ifColor 底磨色, SM_ifColor 手磨色, BL*OrderAmount 备料, 
       ZC*OrderAmount 制材, 
       BT*OrderAmount 补土, 
       JZ*OrderAmount 机作, 
       JM*OrderAmount 机磨, 
       SM*OrderAmount 手磨, 
       QA*OrderAmount 前安, 
       PQ*OrderAmount 喷漆, 
       DM*OrderAmount 底磨, 
       MM*OrderAmount 面磨, 
       HA*OrderAmount 后安, 
       BZ*OrderAmount 包装
FROM (select :OrderAmount OrderAmount) b,TJ_ForecastMaster
WHERE OrderId = :OrderId

上面用到的 OrderAmount就是:OrderAmount 参数的值。
 
 
原文地址:https://www.cnblogs.com/jijm123/p/10328490.html