12.07.2007, 11:02 | #1 |
Участник
|
Связывание датасорсов на форме
Добрый день всем!
Создаю лукапную форму. На ней следующие датасорсы: InventBatch, InventDim, InventSum и InventBatchReserve (некая таблица где содержатся зарезервированные партии). На форме нужно вывести партии из InventBatch, по которым есть физическое наличие в InventSum и которых нет в таблице InventBatchReserve. Делаю следующее: 1) привязываю InventBatchReserve к InventBatch по NotExistsJoin 2) привязываю InventDim к InventBatch по InnerJoin (При этом в форме действительно отображаются только те партии которых нет в InventBatchReserve) 3) привязываю InventSum к InventDim по InnerJoin При этом начинают отображаться партии которые есть в InventBatchReserve. В чем может быть дело, почему в этом случае не отрабатывает 1? В результирующем запросе формы вроде бы все как надо: SELECT * FROM InventBatch JOIN * FROM InventDim WHERE InventBatch.inventBatchId = InventDim.inventBatchId JOIN * FROM InventSum WHERE InventDim.inventDimId = InventSum.InventDimId AND ((PhysicalInvent>0)) NOTEXISTS JOIN * FROM InventBatchReserve WHERE InventBatch.inventBatchId = InventBatchReserve.InventBatchId Есть ли какое нибудь решение в данной ситуации или придется использовать временную таблицу? Заранее спасибо. |
|
12.07.2007, 11:06 | #2 |
Участник
|
партия идентифицируется парой (Номенклатура - ItemID, Номер партии - InventBatchID) соответственно надо добавлять это условие.
|
|
12.07.2007, 11:10 | #3 |
Участник
|
По идее такое возможно, если неправильно выстроены источники данных.
Пересоздайте форму, создавая источники в след. порядке: InventSum - InventDim (InnerJoin) - InventBatch (InnerJoin) - InventBatchReserve (not exists join) |
|
12.07.2007, 11:45 | #4 |
Участник
|
|
|
04.10.2007, 14:41 | #5 |
Участник
|
Тут кроется небольшая ошибочка: InventBatch имеет поиск по двум полям: InventBatchId и ItemId, так что напрямую, в автомате, в DataSource связывать InventBatch и InventDim корректно связать не удасться. Т.е. случае, если несколько номенклатур имеют один номер партии, то запрос будет работать неправильно.
Я сделал View, в котором связываются InventSum и InventDim (надо не забыть проставить во View Relations). А на форму в DataSource положил получившийся View и приджоинил к нему InventBatch, прописав в ините формы Relations между ними: PHP код:
|
|