AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.04.2003, 16:51   #1  
r25 is offline
r25
Участник
 
22 / 10 (1) +
Регистрация: 10.04.2003
Адрес: Москва
Динамическая группировка в SQL
каким способом в SQL X++ строить фразу "group by"?

while select inventTrans
group by ItemId, ConfigId,..... /// группы ьогут меняться
Старый 11.04.2003, 17:13   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Честно говоря, мне не совсем ясно, что ты хочешь получить в результате такого запроса. Если ты группируешь по каким то полям, то ты в select'е можешь получить только эти же поля + агрегаты по остальным полям:

PHP код:
static void Job4(Args _args)
{
   
InventTrans inventTrans;
   ;
   while 
select ItemIdmaxof(Qtyfrom inventTrans
        group by ItemId
   
{
      print 
inventTrans.Qty;
      print 
inventTrans.ItemId;
   }
   
pause;

Старый 11.04.2003, 17:21   #3  
r25 is offline
r25
Участник
 
22 / 10 (1) +
Регистрация: 10.04.2003
Адрес: Москва
нет, нет не так выразился, имею ввиду что мне нужно компантвать сам текст SQL запроса динамически а потом его выполнять. А частный случай -ка раз добавление или удаление, или смена местамии аргументов во фразе group by. Вот о чем я, прошу прошения за неверную формулировку. Исользовать в моем случае Query нельзя.
Старый 11.04.2003, 17:35   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
нет, нет не так выразился, имею ввиду что мне нужно компантвать сам текст SQL запроса динамически а потом его выполнять
Тогда уточни дальше - проблема в динамическом формировании запроса и его исполнении или именно в group by ? Если во-втором, то напиши, как ты формируешь запрос и как его исполняешь ?
Старый 11.04.2003, 17:55   #5  
r25 is offline
r25
Участник
 
22 / 10 (1) +
Регистрация: 10.04.2003
Адрес: Москва
Как динамически формировать SQL запрос? То есть, могу ли я сформировать текст запроса в строковой переменной, а потом выполнить его на сервере. Имею ввиду конструкцию:
while select .....
{
}
Старый 11.04.2003, 18:09   #6  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Как динамически формировать SQL запрос? То есть, могу ли я сформировать текст запроса в строковой переменной, а потом выполнить его на сервере.
Можно воспользоваться классами Connection, Statement, ResultSet. Можно использовать ADO или даже ODBCConnection. Но боюсь вам это не подойдет.

Тогда есть еще один способ. Насколько он удобен - решать Вам. Можно динамически создать job/метод класса, откомпилировать его, выполнить и удалить. Повторюсь - решать вам.

p.s. Есть еще класс xppCompiler, но это примерно та же идея.
Старый 11.04.2003, 18:17   #7  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Мы не ищем лёгких путей
Проще всего сформировать запрос в строковой переменной, после чего выполнить команду

результат = runbuf(тело функции, входящий параметр1, ..., входящий параметрN).
__________________
С уважением, Игорь Ласийчук.
Старый 11.04.2003, 18:22   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Проще всего сформировать запрос в строковой переменной, после чего выполнить команду
результат = runbuf(тело функции, входящий параметр1, ..., входящий параметрN).
Так медленнее (по крайней мере так было у меня в 2.5 SP5). Медленнее не в разы, но все-таки..
Старый 11.04.2003, 18:23   #9  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Так медленнее (по крайней мере так было у меня в 2.5 SP5). Медленнее не в разы, но все-таки..
Поддерживаю. SP2.
Старый 11.04.2003, 18:32   #10  
r25 is offline
r25
Участник
 
22 / 10 (1) +
Регистрация: 10.04.2003
Адрес: Москва
вот это ближе к делу, но как мне использовать тогда такую конструкцию?
st="select *from ......"
while runbuf(st)
{
}
не проверял но мне кажется работать не будет..

А вообще, раз Аксапта интерпретирует исполняемый код , то я так предпологал что может есть возможность использовать макроподстановку которая создается непосредственно во время выполнения, помнится в Foxpro (там тоже интерпретатор) такая штука была, вот хорошо было бы ..
например:

T ="inventTrans";

while select &T // а выполняется "while select inventTrans"
{
}

может есть способ
Старый 11.04.2003, 18:39   #11  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
вот это ближе к делу, но как мне использовать тогда такую конструкцию?
st="select *from ......"
while runbuf(st)
{
}
Дело в том, что весь этот while должен быть в st. Причем весь этот код должен возвращать только один параметр. Но ничто не мешает сделать этот код контейнером или объектом.
Старый 11.04.2003, 18:46   #12  
r25 is offline
r25
Участник
 
22 / 10 (1) +
Регистрация: 10.04.2003
Адрес: Москва
все получилось!
Огромное всем С П А С И Б О за ответы!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX Sustained Engineering: SQL Server 2005 sp3 & SQL Server 2008 with Dynamics AX Blog bot DAX Blogs 0 12.02.2009 06:08
Dynamics AX: SQL Sever 2008 - Performance with Dynamics AX 2009 - Resource Governor Blog bot DAX Blogs 0 23.01.2009 22:05
Dynamics AX: Dynamics AX 2009 & SQL Server 2008 Blog bot DAX Blogs 0 10.06.2008 21:08
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00
aEremenko: Диагностика проблем при установке Microsoft Dynamics Ax 4.0 на Microsoft SQL Server 2005 Blog bot DAX Blogs 0 28.10.2006 16:01

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:12.