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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.04.2011, 10:15   #1  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Как перевести из sql в axapta
Задачка простая: создать совместную таблицу.
Сочинила запрос в sql server работает
X++:
select emplTable.EMPLID, hRMEmplLeave.STARTDATE, hRMEmplLeave.ENDDATE, dirPartyTable.FIRSTNAME, dirPartyTable .LASTNAME   from emplTable       
    left join hRMEmplLeave on hRMEmplLeave.emplId = emplTable.EmplId  
     join dirPartyTable on emplTable.partyId = dirPartyTable.partyId
теперь надо это в axaptа. Перевожу:
X++:
while select emplTable
    outer join hRMEmplLeave where hRMEmplLeave.emplId == emplTable.EmplId
    join dirPartyTable where emplTable.partyId == dirPartyTable.partyId
{
    newTbl.field = hRMEmplLeave.field ;
    newTbl.field1 = emplTable.field1 ;
.....
}
но тут неувязочка какая-то. Почему-то в берётся только последняя запись из hRMEmplLeave для каждого emplId и скрещивается с данными из двух остальных таблиц.
Есть идеи? Заранее спасибо
Старый 27.04.2011, 10:28   #2  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
outer join в АХ не эквивалентен left join в SQL, а эквивалентен FULL OUTER JOIN. Left Join в AX, насколько я знаю, нет.
Старый 27.04.2011, 10:50   #3  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
а как тогда сделать выборку? Есть патенты или изобретать велосипед типа разбить на 2 цикла -один с not exists join там где нет данных в hRMEmplLeave
и второй типа
while select hRMEmplLeave
join emplTable where hRMEmplLeave.emplId == emplTable.EmplId
join dirPartyTable where emplTable.partyId == dirPartyTable.partyId
Старый 27.04.2011, 12:35   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А если поменять местами?
X++:
while select emplTable
join dirPartyTable where emplTable.partyId == dirPartyTable.partyId    
outer join hRMEmplLeave where hRMEmplLeave.emplId == emplTable.EmplId
Вообще полезно трассирнуть sql
Старый 27.04.2011, 13:09   #5  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Цитата:
Сообщение от belugin Посмотреть сообщение
А если поменять местами?
ругается

Cannot select a record in Employee leave (HRMEmplLeave).
The join does not contain any link between the joined tables in the WHERE clause

Цитата:
Сообщение от belugin Посмотреть сообщение
Вообще полезно трассирнуть sql
а что это такое
Старый 27.04.2011, 13:41   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
http://erpkb.com/Axapta/MonitoringZaprosovSQL

а какая у вас версия?
Старый 27.04.2011, 14:25   #7  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
включив Мониторинг запросов SQL можно протоколировать все запросы, которые Axapta посылает СУБД

Включается в меню Сервис \ Параметры \ SQL

У меня почему-то в Service ->Service Area нет Параметры пооткрывала все плюсики. У меня админские права.
версия Dynamics AX 2009 Версия ядра 5.0.1500.1313
Старый 27.04.2011, 15:16   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
в 2009 на английском это Tools\Options в выпадающем меню с лого аксапты вверху окна
Старый 27.04.2011, 15:30   #9  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Спасибо, включила а где смотреть результаты?
Старый 27.04.2011, 16:55   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
там же в найтройках поставить infolog также в настройках АОСа надо позволить трассировать с клиента
Старый 28.04.2011, 09:31   #11  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
да я вроде все чекбоксы отметила но никакох инфы не высветилось.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Connection к другому SQL Server Poleax DAX: Программирование 5 19.10.2010 10:49
Axapta 3.0 и SQL Server 2008 Pon4ik DAX: Администрирование 4 03.09.2009 16:09
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00
axaptabuilder: How to build Axapta application from XPO files stored in Visual Source Safe. Blog bot DAX Blogs 0 12.04.2007 16:10
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, время: 21:40.