我的數據庫用的是Oracle,ord字段的格式為POMYYYYMMDD001 其中YYYYMMDD代表日期 如20070928
Ord 完整的格式POM20070928001,
我想通過下面的代碼找出POMYYYYMMDD一樣的Ord最大值.
比如 POM20070928001, POM20070928002,POM20070928003,POM20070928004
就能根據POM20070928找出POM20070928004代碼如下
 with adoquery2 do
     begin
      close;
      sql.Clear;
      sql.Add('Select max(ord) as ord from tblselllot where substr(ord,1,11)=:B');
      Parameters.ParamByName('B').Value:=lotnum;
      open;
     end;
可是報錯 提示 ORA-00937:不是一個單一群體的群體函數,
代碼中 lotnum 是變量 存放 POM20070928
我把Select max(ord) as ord from tblselllot where substr(ord,1,11)='POM20070928'放在PL/SQL Deveploper中都可以執行,得到結果,為什麼在Delphi 中就報錯.
請大家幫我看以下.

解决方案 »

  1.   

    关注一下。有可能是ADO的问题...
      

  2.   

    Select max(ord) as ord from tblselllot where substr(ord,1,11)=:B
    后面加个group by试试
    Select max(ord) as ord from tblselllot where substr(ord,1,11)=:B group by OtherFieldName
      

  3.   

    加上group by後 還是報錯  提示 'ORA-00979:不是一個GROUP BY表達式'
      

  4.   

    不使用MSDAORA.1驱动使用OraOLEDB.Oracle.1驱动就OK了Provider=MSDAORA.1;Password=manager;User ID=system;Data Source=orcl;Persist Security Info=True
    替换成
    Provider=OraOLEDB.Oracle.1;Password=manager;Persist Security Info=True;User ID=system;Data Source=orcl