|
![]() |
#1 |
Участник
|
Насколько я знаю, опция HAVING в Axapta не поддерживается. Ни в каком виде. Единственное "штатное" решение - это сканировать всю выборку и вручную исключать записи удовлетворяющие условию HAVING.
Хотя, условие count(*)>1 еще можно попробовать решить через NOT EXISTS, но условие sum(VTr.AmountCur)=0 в общем случае без HAVING не решается... |
|
![]() |
#2 |
Участник
|
Я еще вот накопал типа прямого обращения базе, но выдает такую ошибку.
Ошибка: Сбой запроса на разрешение типа "SqlStatementExecutePermission". (S)\Classes\SqlStatementExecutePermission\demand (S)\Classes\Statement\executeQuery вот код, мож кто знает в чем проблема X++: static void Job_VendReport() { UserConnection con = new UserConnection(); Statement stmt = con.createStatement(); ResultSet resultSet; SqlStatementExecutePermission ssep; str sqlExpression ="select VTr.AccountNum,VT.Name,VTr.RContractAccount,RT.RContractCode from VendTrans VTr "+ "join vendtable VT on VT.AccountNum=VTr.AccountNum and VT.DataAreaId='dat' "+ "left join RContractTable RT on RT.RContractAccount=VTr.RContractAccount and RT.DataAreaId='dat' "+ "where VTr.DataAreaId='dat' and VTr.closed=''"+ "group by VTr.AccountNum, VT.Name, VTr.RContractAccount,RT.RContractCode having count(*)>1 and sum(VTr.AmountCur)=0 "+ "order by RT.RContractCode"; ; ssep = new SqlStatementExecutePermission(sqlExpression); ssep.assert(); resultSet = stmt.executeQuery(sqlExpression); while (resultSet.next()) { info(resultSet.getString(1)); } } |
|
![]() |
#3 |
Участник
|
stmt.executeQuery(sqlExpression) должно выполняться на сервере
|
|
Теги |
executequery, query, sql, vendtrans, vendtransopen, запрос (query), как правильно |
|
|