01.09.2005, 11:07 | #1 |
Участник
|
Проблемы с OuterJoin
Модифицировал форму SalesTable, добавив в нее новый DataSource с самопальной таблицей RMEPrintHistory.
Новый DataSource (RMEPrintHistory) соединяется с DataSource (SalesTable) c типом связи OuterJoin. В таблице RMEPrintHistory в узле Relations, указана таблица SalesTable, далее в условии соединения задано SalesTable.salesid== RMEPrintHistory.salesid and RMEPrintHistory.documentstatus == 28 (Facture_Ru) Отношение между таблицами SalesTable и RMEPrintHistory один ко многим . Все работает без проблем. Но стоит применить фильтрацию к гриду , и условие RMEPrintHistory.documentstatus == 28 (Facture_Ru) словно слетает и вылезают все записи для которых верно SalesTable.salesid== RMEPrintHistory.salesid. Голову сломал, в чем может быть дело ... не пойму. Если кто сталкивался с подобным, помогите! |
|
01.09.2005, 11:08 | #2 |
Участник
|
...
|
|
01.09.2005, 11:09 | #3 |
Участник
|
....
|
|
01.09.2005, 11:24 | #4 |
Участник
|
Можно посмотреть какая команда реально приходит на сервер SQL c помощью монитора SQL Аксапты или профайлера SQL Server
|
|
01.09.2005, 11:53 | #5 |
Участник
|
Посмотрел в профайлере .....
До фильтрации PHP код:
PHP код:
Почему ? |
|
01.09.2005, 11:57 | #6 |
Участник
|
По-моему вы строите релейшен не на той таблице. Попробуйте на SalesTable построить рейлейшн на RMEPrintHistory
|
|
01.09.2005, 12:11 | #7 |
Участник
|
А в форме запроса для фильтрации есть строка с DocumentStatus = 28 ?
|
|
01.09.2005, 12:15 | #8 |
Участник
|
2 Bega
DocumentStatus принадлежит подчиненной таблице. Чтобы отфильтровать по нему явно надо связать таблицы в фильтре и выбирать уже по RMEPrintHistory.DocumentStatus |
|
01.09.2005, 12:18 | #9 |
Участник
|
У меня есть похожий случай, в форме фильтра строка с полем по которому есть связь типа "поле ссылки фиксировано" отображается сразу, ее не надо добавлять пользователю
|
|
01.09.2005, 12:21 | #10 |
Участник
|
может попробовать сбросить настройки пользователя ?
|
|
01.09.2005, 12:22 | #11 |
Участник
|
По-моему я делал все правильно (все-таки основной таблицей является SalesTable).
Но все же попробовал перенести релэйшн в Salestable ... Получил два запроса без условия B.DOCUMENTSTATUS=28 до фильтрации PHP код:
после фильтрации PHP код:
Вопрос в том, почему при фильтрации условие B.DOCUMENTSTATUS=28 словно корова съедает ... Цитата:
А в форме запроса для фильтрации есть строка с DocumentStatus = 28 ?
|
|
01.09.2005, 12:35 | #12 |
Участник
|
Цитата:
DocumentStatus принадлежит подчиненной таблице. Чтобы отфильтровать по нему явно надо связать таблицы в фильтре и выбирать уже по RMEPrintHistory.DocumentStatus
|
|
01.09.2005, 12:47 | #13 |
Участник
|
Извиняюсь, что внес сумятицу в вопрос. Невнимательно прочитал вопрос и посчитал, что много записей в SalesTable
|
|
01.09.2005, 12:53 | #14 |
Участник
|
Я расчитывал, что выборка будет идти по следующему алгоритму
без фильтрации PHP код:
PHP код:
|
|
01.09.2005, 13:01 | #15 |
Участник
|
Сейчас проверил. Поле связи фиксировано действительно присутствует в фильтре и устанавливатеся явно. При этом связанная таблица также явно указывается. Т.е. возможно вы убираете этот критерий из запроса? Могли бы вы показать скриншот самого запроса?
|
|
01.09.2005, 13:19 | #16 |
Участник
|
Спасибо за помощь.
Да, фиксированное поле присутсвует в виде условия ( которое можно удалить). Проблемы были из-за настроек пользователя. Подхватывался ранее настроенный запрос. После сброса настроек и удаления ранее сохраненных запросов фиксированное поля появилось. Вот бы его еще удалять нельзя было =) |
|
01.09.2005, 13:25 | #17 |
Участник
|
Цитата:
Изначально опубликовано ATimTim
Нет там такого условия. Но там также нет и условия равенства salesid, однако оно попадает запрос ... Цитата:
Изначально опубликовано ATimTim
Вот бы его еще удалять нельзя было =) |
|
01.09.2005, 13:28 | #18 |
Участник
|
Посмотрите здесь http://www.axforum.info/forums/showt...8623#post78623 это обсуждалось только вчера для журналов
|
|
01.09.2005, 13:28 | #19 |
Участник
|
Цитата:
Чтобы его нельзя было удалить необходимо ему установить статус Locked или Hidden
|
|
01.09.2005, 15:51 | #20 |
Участник
|
К сожалению без программирования я не знаю способа. Но могу предложить как это сделать для всей системы.
Класс SysQueryForm, метод buildRange 1. Необходимо добавить следующую вложенную функцию PHP код:
PHP код:
PHP код:
|
|