• 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 参数的值。
     
     
  • 相关阅读:
    java中的设计模式
    stack
    最大堆排序
    Starship Troopers
    Tick and Tick
    Last non-zero Digit in N!
    G
    C
    B
    A
  • 原文地址:https://www.cnblogs.com/jijm123/p/10328490.html
Copyright © 2020-2023  润新知