Не работает запрос

 
0
 
Oracle
ava
Valdemaras | 17.03.2006, 11:31
Не работает параметрический запрос в Delphi следующего содержания.


select
pol_name,
sum(Pay_Summa),
sum(Pay_Comm_Pay),
sum(Pay_Comm_Pol)

from Payments
where pay_date_oper >= :date_min and
pay_date_oper <= :date_max



group by Pol_name
order by Pol_name


говорит следующее "ORA-00979 not a Group by expression"!!!

Заполняю параметры следующим образом, и заполнение происходит корректно.

Form_Report_Pay_1.Query_Pay_Sum.Close;
Form_Report_Pay_1.Query_Pay_Sum.Parameters.ParamByName('date_min').Value := DE_Begin.Date;
Form_Report_Pay_1.Query_Pay_Sum.Parameters.ParamByName('date_max').Value := DE_End.Date;
Form_Report_Pay_1.Query_Pay_Sum.Open;


На последней строке соответственно выводит ошибку. В sql navigator этот запрос работает если подставить реальные даты. Без параметров в Дельфе тоже работает.

КАК СДЕЛАТЬ ЧТОБЫ РАБОТАЛО С ПАРАМЕТРОМ!!???
Comments (6)
ava
LSD | 17.03.2006, 11:37 #
Попробуй переписать условие так:
where ( ( pay_date_oper >= :date_min ) and ( pay_date_oper <= :date_max ) )
ava
Valdemaras | 17.03.2006, 12:14 #
Не помогло, аналогичная ошибка!
ava
bas | 17.03.2006, 13:06 #
А between не подойдет?
или

select
pol_name,
sum(Pay_Summa),
sum(Pay_Comm_Pay),
sum(Pay_Comm_Pol)

from Payments
where pay_date_oper >= to_char(:date_min,'YYYY-MM-DD')
and
pay_date_oper <= to_char(:date_max,'YYYY-MM-DD')

// или to_date в зависимости какого типа DE_Begin.Date

group by Pol_name
order by Pol_name

Формат даты можно узнать

select sysdate from dual;

added later:
Цитата (Valdemaras @ 17.3.2006, 11:31 findReferencedText)
говорит следующее "ORA-00979 not a Group by expression"!!!

Говорит что Идентификатор столбца ни стоит в предложении GROUP BY , ни является аргументом групповой функции.
Либо запрос приеден не полностью или поробуй

group by рol_name
order by рol_name
ava
LSD | 17.03.2006, 13:59 #
Попробуй так:
Form_Report_Pay_1.Query_Pay_Sum.Close;    
Form_Report_Pay_1.Query_Pay_Sum.Open;

он должен выдать ошибку, что не все переменые привязаны.
ava
Valdemaras | 03.04.2006, 08:59 #
Вот что работает

select * from payments a, poluchatel b
where b.pol_check = 1 and
(a.pay_date_oper between :date_min and :date_max)
order by a.pol_name, a.pay_date_oper


а этот не работает

select
pol_name,
sum(Pay_Summa),
sum(Pay_Comm_Pay),
sum(Pay_Comm_Pol)

from Payments
where (pay_date_oper between :date_min and :date_max)
group by Pol_name
order by Pol_name


все таже ошибка, я панике бегаю по офису и рву волосы на голове соседки! :stena :stena :stena
ava
LSD | 03.04.2006, 23:46 #
Цитата (Valdemaras @ 3.4.2006, 09:59 findReferencedText)
я панике бегаю по офису и рву волосы на голове соседки!

Оставь девушку в покое! smile

Попробуй создать такую процедуру:
create or replace and compile java source named TEST as
import java.util.Calendar;
import java.sql.*;
import java.sql.Date;

public class Test
{
public static ResultSet query() throws SQLException
{
Connection conn = DriverManager.getConnection("jdbc:default:connection:");
PreparedStatement preparedStatement = conn.prepareStatement("select pol_name, sum(Pay_Summa), sum(Pay_Comm_Pay), sum(Pay_Comm_Pol) from Payments where (pay_date_oper between ? and ?) group by Pol_name order by Pol_name");
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(2005, Calendar.JANUARY, 1);
preparedStatement.setDate(1, new Date(calendar.getTimeInMillis()));
calendar.clear();
calendar.set(2006, Calendar.JANUARY, 1);
preparedStatement.setDate(1, new Date(calendar.getTimeInMillis()));
return preparedStatement.executeQuery();
}
}
/

create or replace package REFCURPKG is
type REFCUR_T is ref cursor;
end REFCURPKG;
/

create or replace function TEST return REFCURPKG.REFCUR_T as
language java name 'Test.query() return java.sql.ResultSet';


Если отработает нормально, значит проблема чисто в Delphi и дальше надо уже в Delphi-шном разделе спрашивать.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  bas ava  LSD   Valdemaras
advanced
Submit