![]() |
#1 |
Участник
|
Динамическая группировка в SQL
каким способом в SQL X++ строить фразу "group by"?
while select inventTrans group by ItemId, ConfigId,..... /// группы ьогут меняться |
|
![]() |
#2 |
Moderator
|
Честно говоря, мне не совсем ясно, что ты хочешь получить в результате такого запроса. Если ты группируешь по каким то полям, то ты в select'е можешь получить только эти же поля + агрегаты по остальным полям:
PHP код:
|
|
![]() |
#3 |
Участник
|
нет, нет не так выразился, имею ввиду что мне нужно компантвать сам текст SQL запроса динамически а потом его выполнять. А частный случай -ка раз добавление или удаление, или смена местамии аргументов во фразе group by. Вот о чем я, прошу прошения за неверную формулировку. Исользовать в моем случае Query нельзя.
|
|
![]() |
#4 |
Moderator
|
Цитата:
нет, нет не так выразился, имею ввиду что мне нужно компантвать сам текст SQL запроса динамически а потом его выполнять
|
|
![]() |
#5 |
Участник
|
Как динамически формировать SQL запрос? То есть, могу ли я сформировать текст запроса в строковой переменной, а потом выполнить его на сервере. Имею ввиду конструкцию:
while select ..... { } |
|
![]() |
#6 |
Moderator
|
Цитата:
Как динамически формировать SQL запрос? То есть, могу ли я сформировать текст запроса в строковой переменной, а потом выполнить его на сервере.
Тогда есть еще один способ. Насколько он удобен - решать Вам. Можно динамически создать job/метод класса, откомпилировать его, выполнить и удалить. ![]() p.s. Есть еще класс xppCompiler, но это примерно та же идея. |
|
![]() |
#7 |
NavAx
|
Мы не ищем лёгких путей
![]() Проще всего сформировать запрос в строковой переменной, после чего выполнить команду результат = runbuf(тело функции, входящий параметр1, ..., входящий параметрN).
__________________
С уважением, Игорь Ласийчук. |
|
![]() |
#8 |
Модератор
|
Цитата:
Проще всего сформировать запрос в строковой переменной, после чего выполнить команду
результат = runbuf(тело функции, входящий параметр1, ..., входящий параметрN). |
|
![]() |
#9 |
Moderator
|
Цитата:
Так медленнее (по крайней мере так было у меня в 2.5 SP5). Медленнее не в разы, но все-таки..
|
|
![]() |
#10 |
Участник
|
вот это ближе к делу, но как мне использовать тогда такую конструкцию?
st="select *from ......" while runbuf(st) { } не проверял но мне кажется работать не будет.. А вообще, раз Аксапта интерпретирует исполняемый код , то я так предпологал что может есть возможность использовать макроподстановку которая создается непосредственно во время выполнения, помнится в Foxpro (там тоже интерпретатор) такая штука была, вот хорошо было бы .. например: T ="inventTrans"; while select &T // а выполняется "while select inventTrans" { } может есть способ |
|
![]() |
#11 |
Moderator
|
Цитата:
вот это ближе к делу, но как мне использовать тогда такую конструкцию?
st="select *from ......" while runbuf(st) { } |
|
![]() |
#12 |
Участник
|
все получилось!
Огромное всем С П А С И Б О за ответы! |
|
|
|