delphi 7.0下连oracle:
ADOQuery1.SQL.Add('select charge_type, count(charge_type) from pat_visit where admission_date_time between :l_date and :h_date group by charge_type');
ADOQuery1.Parameters.ParamByName('l_date').Value:=AdvDateTimePicker1.DateTime;
ADOQuery1.Parameters.ParamByName('h_date').Value:=AdvDateTimePicker2.DateTime;为什么报ora-00979错误:not a group by express。
改为
ADOQuery1.SQL.Add('select charge_type from pat_visit where admission_date_time between :l_date and :h_date');
ADOQuery1.Parameters.ParamByName('l_date').Value:=AdvDateTimePicker1.DateTime;
ADOQuery1.Parameters.ParamByName('h_date').Value:=AdvDateTimePicker2.DateTime;
可以运行。谢谢.
ADOQuery1.SQL.Add('select charge_type, count(charge_type) from pat_visit where admission_date_time between :l_date and :h_date group by charge_type');
ADOQuery1.Parameters.ParamByName('l_date').Value:=AdvDateTimePicker1.DateTime;
ADOQuery1.Parameters.ParamByName('h_date').Value:=AdvDateTimePicker2.DateTime;为什么报ora-00979错误:not a group by express。
改为
ADOQuery1.SQL.Add('select charge_type from pat_visit where admission_date_time between :l_date and :h_date');
ADOQuery1.Parameters.ParamByName('l_date').Value:=AdvDateTimePicker1.DateTime;
ADOQuery1.Parameters.ParamByName('h_date').Value:=AdvDateTimePicker2.DateTime;
可以运行。谢谢.
解决方案 »
- 为什么我的delphi没有Tregistry类?
- 用Delphi7做的EXE无法操作窗口
- 数据导入问题
- 关于SPCOMM的问题,顶者有分!
- 如何让webbrowser中的window.alert("")不出现提示框
- 如何取消任务栏的总在最前属性?
- 关于"DBComboBox"问题
- 如何让PostMessage函数传三个参数到指定窗体中?把你代码写一下好吗?
- 当Excel文件.xls另存为.Txt文件后,如何从Txt中读取数据,急,在线等待
- 何处有完整的SQL-SERVER PACK2光盘或其中MSDE更新包中SETUP目录中所有16个文件可下载?
- 用ado连接数据库是需要先在ODBC里面创建数据源么? 操作步骤是什么呢?谢谢
- 在线程中使用ADO,出现异常。
就是这个没研究过
关注一下
查了百度,说是版本有bug,要设置_complex_view_merging参数为false才行,试试alter session set "_complex_view_merging"=false
ADOQuery1.SQL.Add('where admission_date_time between '''+DateToStr(AdvDateTimePicker1.DateTime)+''' and '''+DateToStr(AdvDateTimePicker2.DateTime)+'''');
ADOQuery1.SQL.Add('group by charge_type');
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from pat_visit');
ADOQuery1.SQL.Add(' where ADMISSION_DATE_TIME between :l_date and :h_date');
ADOQuery1.Parameters.ParamByName('l_date').Value:=form6.AdvDateTimePicker1.DateTime;
ADOQuery1.Parameters.ParamByName('h_date').Value:=form6.AdvDateTimePicker2.DateTime;
ADOQuery1.Open;ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select CHARGE_TYPE ,count(CHARGE_TYPE) from pat_visit');
ADOQuery1.SQL.Add(' where ADMISSION_DATE_TIME between :l_date and :h_date group by CHARGE_TYPE');
ADOQuery1.Parameters.ParamByName('l_date').Value:=form6.AdvDateTimePicker1.DateTime;
ADOQuery1.Parameters.ParamByName('h_date').Value:=form6.AdvDateTimePicker2.DateTime;
ADOQuery1.Open;以上两段语句一起运行,没有任何问题,可以得出结果,而单独运行后一段则报错:
ora-00979错误:not a group by express.
太奇怪了,为什么呀?谢谢!
我遇到过,就是有group by的语句在ADOQuery是不能使用Parameters的,没有原因,Oracle也没问题,但可以把参数嵌套在SQL语句里面,就是麻烦了一点,老老实实用变量吧~PL/SQL ,toad这些都没问题的,就是ADO的bug
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, DB, ADODB, Grids, DBGrids;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Button1: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select stationstat ,count(stationstat) as rs from personinfo');
ADOQuery1.SQL.Add('where birthday between :l_date and :h_date group by stationstat');
ADOQuery1.Parameters.ParamByName('l_date').Value:=DateTimePicker1.DateTime;
ADOQuery1.Parameters.ParamByName('h_date').Value:=DateTimePicker2.DateTime;
ADOQuery1.Open;
end;end.图片传不上来。查询结果和后台PL/SQL一样正确。
在连接时,建议楼主使用:OraOLEDB.Oracle.1