05.03.2008, 18:09 | #1 |
Участник
|
Как приджойнить "левый" датасорс
Образно ситуация такая:
Есть форма, на ней датасорс, допустим, InventTable. У меня есть своя таблица у которой 2 поля такие же как и у InventTable, например, ItemId и PropertyId. Я хочу чтобы эти два датасорса объединялись на форме по совпадающим полям. Нужен outer join, т.е если нет записей в дочернем источнике отображалось его пустое поле. Пробовал создавать релейшн на своей таблице, и в дизайнере указывал соединение c InventTable типа outer join - появляется ошибка. Думаю что нужно делать программно, но четкого понимания как это сделать нет. Подскажите пож-та кто знает. |
|
06.03.2008, 12:34 | #2 |
Участник
|
никто не решал подобную задачу?
|
|
06.03.2008, 12:37 | #3 |
Участник
|
такую задачу решали все. просто вы в чём-то ошиблись. посмотрите примеры джойнов на других формах
|
|
06.03.2008, 12:57 | #4 |
Участник
|
Обычно помогает, если указывается текст ошибки
|
|
06.03.2008, 12:58 | #5 |
Axapta Retail User
|
а какой текст ошибки?
Too kashperuk: прошу прощения за спам) так получилось..
__________________
Романтик.. Последний раз редактировалось xenikk; 06.03.2008 в 13:01. |
|
06.03.2008, 13:25 | #6 |
Участник
|
текст ошибки:
Невозможно выбрать запись в 'Моя таблица' ('MyTable') Использован оператор объединения таблиц join, но выражение WHERE не содержит связи между таблицами. |
|
06.03.2008, 13:31 | #7 |
Участник
|
Хм. А вы Relation между таблицами настроили по этим двум полям?
|
|
06.03.2008, 13:37 | #8 |
Участник
|
конечно.
причем InnerJoin отрабатывает. Последний раз редактировалось breakpoint; 06.03.2008 в 13:39. |
|
06.03.2008, 14:08 | #9 |
Участник
|
Быстрее будет, если вы хро выложите.
|
|
06.03.2008, 14:46 | #10 |
Участник
|
проект выложить проблема...
я сильно упростил ситуацию |
|
06.03.2008, 15:12 | #11 |
Axapta Retail User
|
тогда у вас решение проблемы одно: следовать совету "ice"..
может загвоздка в чем-то другом?
__________________
Романтик.. |
|
06.03.2008, 15:51 | #12 |
Developer
|
Цитата:
Сообщение от breakpoint
...Есть форма, на ней датасорс, допустим, InventTable. У меня есть своя таблица... Я хочу чтобы эти два датасорса объединялись на форме по совпадающим полям. Нужен outer join... - появляется ошибка.
текст ошибки: Невозможно выбрать запись в 'Моя таблица' ('MyTable') Использован оператор объединения таблиц join, но выражение WHERE не содержит связи между таблицами. Последний раз редактировалось vallys; 06.03.2008 в 15:55. |
|
|
За это сообщение автора поблагодарили: breakpoint (1). |
07.03.2008, 12:46 | #13 |
Участник
|
Да, вы правы. Я пытался приджойнить MyTable к InventTable минуя еще ряд таблиц которые связаны с InventTable по InnerJoin. В итоге попробовал связать MyTable по OuterJoin с последней таблицей, которая связана с InventTable InnerJoin. Вроде работает, но если накладываю фильтр на MyTable InventTable не фильтруется. Вообщем продолжаю копать...
Может ктонибудь знает пример формы где можно посмотреть прим. такую схему: DS1 InnerJoin DS2 -> DS1 OuterJoin DS3 -> DS2 ну и чтобы фильтры работали как надо ) Последний раз редактировалось breakpoint; 07.03.2008 в 12:56. |
|
07.03.2008, 13:24 | #14 |
Developer
|
Фильтры в Аксапте - это условия в конструкции "where", а Вам, по всей видимости, нужны условия в конструкции "having". Так Аксапта не сможет, разве что через вьюхи (в запросе все равно не будет "having")... ну или как-нибудь через временные таблицы
Посмотрите запрос, который уходит на SQL-сервер - там видно как используются фильтры. Последний раз редактировалось vallys; 07.03.2008 в 13:31. |
|
07.03.2008, 15:57 | #15 |
Участник
|
Решил сделать через временную таблицу. Данными ее заполнил теперь остается приджойнить ее InnerJoin 1:1 к InventTable по ItemId. Попробовал создать на ней релэйшн к InventTable по ItemId и в дизайнере настроить связь - не работает...
подскажите как это сделать |
|
07.03.2008, 16:09 | #16 |
Участник
|
Все, разобрался.
|
|
22.03.2008, 20:20 | #17 |
MCITP
|
Прикольно.. А я почти всё время имел дело с ораклом и даже не подозревал о такой проблеме... )
Недавно столкнулся на Сиквеле, решил проблему на коленке путём прописывания рэнджа в датасорс 3 (и 4) прям на эктиве датасорса 1. Ну вообщем всем спасибо за тему, буду знать.
__________________
Zhirenkov Vitaly |
|