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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.03.2004, 11:58   #1  
Oz is offline
Oz
Участник
Аватар для Oz
 
293 / 51 (2) ++++
Регистрация: 22.08.2002
Адрес: Москва
joined курсор
Уважаемые господа и товарищи!

Вот с какой бедой я столкнулся:
Есть разработанный мной отчет,
В корне DataSources два независмых датасорса: один по PurchTable с несколькими подчиненными уровнями, второй по LedgerTable без подчиненных датасорсов.
Далее в корне GeneratedDesign PageHeader, с полями, использующими PurchTable и несколько секций, причем все кроме одной используют таблицы из подчиненных датасорсов к PurchTable, а одна, последняя, использует LedgerTable.
В последней секции у Body перекрыт executeSection, в котором используется такой оператор:
PHP код:
    while select ledgerTrans
        join VendInvoiceJour
            where 
(ledgerTrans.TransDate == VendInvoiceJour.InvoiceDate && ledgerTrans.Voucher ==
                   
VendInvoiceJour.LedgerVoucher)
            
join PurchTableLinks where VendInvoiceJour.PurchId == PurchTableLinks.SubPurchId
                join PurchTable where 
(PurchTableLinks.MainPurchId == PurchTable.PurchId &&
                                       
PurchTable.PurchId == contractId
В рантайме этот оператор вызывает ошибку "joined курсор был использован в другом операторе select".

Начинаю спрашивать:
Судя по всему вышеуказанный оператор конфликтует с использованием датасорса от PurchTable.
Так ли это?
Конфликт вызван тем, что оба запроса используют одинаковые таблицы или joined курсоры впринципе не совместимы при одновременном использовании?
В принципе, на момент формирования последней секции отчета, запрос по PurchTable из DataSources со всеми подчиненными уже мало интересует, можно ли каким нибудь образом указать системе, что курсор по PurchTable из DataSources уже можно закрыть?

Заранее благодарен.
__________________
Здесь могла быть Ваша реклама!
Старый 24.03.2004, 11:06   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Если еще не поздно
"joined курсор" где-то на форуме обсуждался
Могу предложить такие решения
1. В executeSection объявить другой курсор PurchTable _purchTable и его использовать в запросе. Этот метод мне кажется более правильным и наглядным.
2. Перед запросом вставить purchTable.clear()
Старый 25.03.2004, 09:43   #3  
Oz is offline
Oz
Участник
Аватар для Oz
 
293 / 51 (2) ++++
Регистрация: 22.08.2002
Адрес: Москва
Конечно поздно
Уже перенес while select в init класса отчета, что даже оптимальнее, но все равно спасибо.
Чтобы довнести полную ясность:

Метод №1 замечательно действует, нужный результат достагается.

В методе №2 PurchTable.clear не срабатывает на уровне компиляции (синтаксическая ошибка).
__________________
Здесь могла быть Ваша реклама!
Старый 25.03.2004, 10:27   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Табличную переменную проще очищать командой:

purchTable = null;
Старый 25.03.2004, 10:43   #5  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Немого не в тему....
Символ подчеркивания в начале наименования переменной должен использоваться ТОЛЬКО при наименовании формальных параметров.

Изучайте стандарты разработки.
Старый 25.03.2004, 11:01   #6  
Oz is offline
Oz
Участник
Аватар для Oz
 
293 / 51 (2) ++++
Регистрация: 22.08.2002
Адрес: Москва
Немного позанудствую :

PurchTable = null;
не пройдет (как и PurchTable.clear()), если табличную переменную явно не объявить в методе.
А ситуация была именно с использованием в запросе уже определенного в отчете DataSource
__________________
Здесь могла быть Ваша реклама!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Курсор перешел к следующей записи на клиенте, на сервере этого сделать уже нельзя PavelSR DAX: Программирование 22 01.11.2012 07:33
Как сдлеать join по одной таблице, а курсор по другой cerbo DAX: Программирование 9 03.10.2008 09:29
Как поставить курсор на форме на требуемую строку? NetBus DAX: Программирование 5 09.11.2005 15:22
При создании новой записи не устанавливается курсор.. I don't understand DAX: Программирование 3 30.08.2004 12:44
joined-курсор был использован в другом операторе SELECT raz DAX: Программирование 8 08.01.2004 12:54
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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