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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.11.2007, 12:25   #1  
dns is offline
dns
Участник
 
19 / 13 (1) ++
Регистрация: 11.05.2007
Хм... А что мешает сделать join с временной таблицей? Извените, конечно, если что - то не понял? Как вариант :
queryRun.setCursor(common);
Передаём туда временную таблицу (естественно изменив перед этим Query) и... Вуаля - должно работать
Старый 02.05.2012, 12:35   #2  
uskutus is offline
uskutus
Участник
 
28 / 10 (1) +
Регистрация: 04.04.2012
Не получается сделать join.

Делаю. В ExequteQuery датасоурса постоянной таблицы myTable.

mytmptable mytmp;
;
***
mytmptable1.setTmpData(mytmp); //mytmptable1 имя datasource с временной таблицей.

qbds = this.query().dataSourceTable(tablenum(mytmptable));
qbds = qbds.addDataSource(tablenum(myTable)); - на этой строчке компилятор ругается "QueryBuildDataSource, объект не инициализирован."

qbds.addLink(fieldnum(myTable, key), fieldnum(myTmpTable, key));
qbds.joinMode(JoinMode::InnerJoin);

Под инициализацией это имелось ввиду?

Цитата:
Сообщение от dns Посмотреть сообщение
Хм... А что мешает сделать join с временной таблицей? Извените, конечно, если что - то не понял? Как вариант :
queryRun.setCursor(common);
Передаём туда временную таблицу (естественно изменив перед этим Query) и... Вуаля - должно работать
В MSDN ни полслова не нашел, что делает эта функция.
Попробовал вставить
this.queryRun().setCursor(mytmp);

В этой строке выдается ошибка - "неправильный аргумент типа функции." Причем почему-то уже на этапе выполнения.

Последний раз редактировалось uskutus; 02.05.2012 в 12:40.
Старый 02.05.2012, 13:01   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от uskutus Посмотреть сообщение
...
Делаю. В ExequteQuery датасоурса постоянной таблицы myTable.
...
mytmptable1 имя datasource с временной таблицей.
...
Сколько датасурсов у вас на форме и как они связаны? Зачем программно меняете структуру query (зачем добавляете ещё датасурс командой addDataSource)?
Старый 02.05.2012, 13:23   #4  
uskutus is offline
uskutus
Участник
 
28 / 10 (1) +
Регистрация: 04.04.2012
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Сколько датасурсов у вас на форме и как они связаны? Зачем программно меняете структуру query (зачем добавляете ещё датасурс командой addDataSource)?
Датасоурсов 6 штук. Меня интересуют только 2 - постоянная и временная таблица. Между ними связь по ключам key.

Запрос для временной таблицы такого вида:

while select mytable
{
select firstfast firstonly mytmptable
order by f1 desc, f2 desc
where mytmptable.key2 == table2.key2
&& mytmptable.key == mytable.key;
***
}

Мне для формирования нужна только 1 выделенная запись из table2, поэтому весь набор проходить вроде как ни к чему.

Программно меняю, потому что при соединении декларативно при выполнении аксапта ругается на то, что datasourse не инициализирован в местах, где совершенно не понятно, что ей не нравится.

addDataSource сделал, разбираясь в примерах, может быть и не надо было. Я подумал, что QueryBuildDataSource qbds; для формирования связи требует такого синтаксиса.

если убрать строчку qbds = qbds.addDataSource(tablenum(myTable));
Ошибка возникает на строке qbds.addLink(fieldnum(myTable, key), fieldnum(myTmpTable, key));

Да, и еще. Требуется реализовать фильтр в зависимости от состояния элемента управления, поэтому также query приходится менять программно.

Последний раз редактировалось uskutus; 02.05.2012 в 14:08.
Старый 02.05.2012, 14:08   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от uskutus Посмотреть сообщение
Я подумал, что QueryBuildDataSource qbds; для формирования связи требует такого синтаксиса.
addDataSource добавляет ещё один подчинённый датасорс. Так что, если все необходимые датасурсы у вас итак заранее вынесены на форму и связанны друг с другом (прописаны свойства JoinSouce и LinkType), то необходимости в нём нет.

addLink - позволяет указать поля по которым система будет соединять связанные датасурсы.
Метод addLink нужно вызывать у подчинённого датасурса. Датасурс на этот момент должен быть инициализирован. Т.е. делать это не раньше чем отработает super() в методе init() соответствующего датасурса.
Старый 02.05.2012, 14:17   #6  
uskutus is offline
uskutus
Участник
 
28 / 10 (1) +
Регистрация: 04.04.2012
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
addDataSource добавляет ещё один подчинённый датасорс. Так что, если все необходимые датасурсы у вас итак заранее вынесены на форму и связанны друг с другом (прописаны свойства JoinSouce и LinkType), то необходимости в нём нет.

addLink - позволяет указать поля по которым система будет соединять связанные датасурсы.
Метод addLink нужно вызывать у подчинённого датасурса. Датасурс на этот момент должен быть инициализирован. Т.е. делать это не раньше чем отработает super() в методе init() соответствующего датасурса.
свойства JoinSouce и LinkType для временной таблицы не прописаны, так как выдается ошибка что датасоурс не проинициализирован. Собственно, я создаю временную таблицу в методе executequery главной таблицы, поэтому на момент Init временной, ее еще нет. Поэтому я делаю связь программно после создания временной, и опять получаю ошибку, что датасоурс не проинициализирован.

Если я правильно понял, требуется вызвать метод SetCursor, как то я неправильно его вызываю.
Старый 02.05.2012, 14:23   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от uskutus Посмотреть сообщение
выдается ошибка что датасоурс не проинициализирован
в каком месте проявляется эта ошибка?

Цитата:
Сообщение от uskutus Посмотреть сообщение
Если я правильно понял, требуется вызвать метод SetCursor, как то я неправильно его вызываю.
Методы SetCursor и SetTmpData лишь меняют содержимое таблицы, но не создают её.
Связи должны работать (не выдавать ошибок) и на пустых таблицах.
Теги
ax2.5

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Передать временную таблицу из формы в класс Eldar9x DAX: Программирование 26 20.06.2008 19:09
Как join'ить временную таблицу и query на форме IvanS DAX: Программирование 1 07.05.2008 09:49
Два DataSource на одну временную таблицу mou DAX: Программирование 4 22.03.2008 11:00
импорт текст.файла во временную таблицу fialka DAX: Программирование 5 07.02.2007 15:42
Как передать временную таблицу Aslan DAX: Программирование 15 23.05.2006 17:34

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

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

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