23.09.2010, 10:48 | #1 |
Участник
|
Две таблицы в гриде
Доброго дня всем.
Есть несложная, вроде бы, задача: Имеются три таблицы: 1. Склады 2. Номенклатура 3. Склад, Номенклатура, ПараметрНоменклатурыДляСклада1..N. В таблице Склады есть, к примеру, три записи. Я сделал форму, в которой два грида: в одном отображается номенклатура, а в другом, по-замыслу, должны отображаться записи из третьей таблицы, для каждой номенклатуры, соответственно, должно быть три записи для изменения полей ПараметрНоменклатурыДляСклада1..N. Во втором гриде ставлю DataSource в значение Склад, выводятся по три записи на каждую номенклатуру. Вопрос такой: можно ли сделать в этом гриде возможность изменения значений полей таблицы 3 (ПараметрНоменклатурыДляСклада1..N) без написания дополнительного кода, или же, идти по сложному пути, и для каждого поля ПараметрНоменклатурыДляСкладаN делать в гриде поле ввода, обрабатывать ввод данных и обновлять значение в таблице 3? --------------- DAX 4.0 |
|
23.09.2010, 10:58 | #2 |
Участник
|
А чем соединения таблиц join или outer join не подходят?
|
|
23.09.2010, 11:00 | #3 |
Участник
|
А зачем в такой постановке вообще таблица "Склады"??
__________________
Ivanhoe as is.. |
|
23.09.2010, 11:03 | #4 |
Участник
|
|
|
23.09.2010, 11:05 | #5 |
Участник
|
Могу предположить, что для визуального заполнения таблицы с параметрами пустыми значениями
А если только для этого, то фильтр можно наложить и на таблицу параметров, там же есть поле склад |
|
23.09.2010, 11:05 | #6 |
Участник
|
Если таблица с параметрами обязательно существует для каждой пары склад-номенклатура, то проблем нет. А вот если может и не существовать, то, как мне кажется, тут без программирования не обойтись
|
|
23.09.2010, 11:10 | #7 |
Участник
|
ключевой вопрос в задаче -
какая целостность данных в таблице ПараметрОВ_НоменклатурыДляСклада? то есть для пары номенклатура + склад всегда должна быть запись в этой таблице? если да - пишите код генерации и удаления при изменениях в таблицах номенклатур и складов... а форма автоматом отобразит в гриде все что нужно на редактирование - вариант очень кривой, но по постановке именно такой - плюс параметр по умолчанию сделать если нет - просто на втором гриде - датасоурсе таблицы = ПараметрОВ_НоменклатурыДляСклада - добавлять, удалять руками и править без доп кода - вот так корректно промежуточный вариант - при открытии формы и навигации генерить записи в перекрытых на форме методах вообще не советую - целостность этих трех таблиц будет только в форме - лучше кнопку "Мастер создания записей" ps не забыть про уникальный индекс нома + склад в таблице и все |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), Prophetic (1). |
23.09.2010, 11:10 | #8 |
Участник
|
А если сделать OuterJoin параметров к складам + возможно указать свойство InsertIfEmpty?
|
|
|
За это сообщение автора поблагодарили: Prophetic (1). |
23.09.2010, 11:24 | #9 |
Участник
|
Цитата:
Возвращаемся к основному вопросу: запись таблицы параметров обязательно есть для каждой пары склад-номенклатура? Если "Да", то описанная задача возможна, если "Нет", то только программировать. |
|
23.09.2010, 11:33 | #10 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Не знаю, допускает ли в 4 версии Outer Join править "не существующие" записи подчиненной таблицы или просто автоматом создаст недостающие? Но в последнем случае это означает автоматом сгенерить недостающие записи и фактически сделать inner Join.
Возвращаемся к основному вопросу: запись таблицы параметров обязательно есть для каждой пары склад-номенклатура? Если "Да", то описанная задача возможна, если "Нет", то только программировать. Outer join с InsertIfEmpty от параметров к складам выводит три записи с пустыми значениями, дает возможность сохранить значения только для одной записи. Последний раз редактировалось Prophetic; 23.09.2010 в 11:39. |
|
23.09.2010, 11:42 | #11 |
Участник
|
Данную задачку я представляю следующим образом - рисунок ниже.
Поэтому достаточным, по-моему, будет определить связи на датасоурсах InventLocation и InventTable следующим образом: JoinSource = InventLocationParam, LinkType = Delayed (по умолчанию).
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 23.09.2010 в 11:45. |
|
23.09.2010, 11:44 | #12 |
Участник
|
|
|
23.09.2010, 12:44 | #13 |
Участник
|
Цитата:
Если "Да", то генерите автоматом недостающие записи по каждому складу при выборе номенклатуры и делайте связку по Inner Join. Если "Нет", то без программирования все-равно не получится. Ведь даже если Вы реализуете то, что хотите, но в момент сохранения придется проверять запись на пустоту и удалять если пусто. PS: вообще-то, описана почти стандартная схема Шапка документа - Номенклатура - Складская аналитика. Может, стоит просто скопировать то, что есть в стандартных формах заказов и закупок? |
|
|
За это сообщение автора поблагодарили: Prophetic (1). |
23.09.2010, 14:07 | #14 |
Участник
|
Цитата:
Цитата:
Всех благодарю за участие в обсуждении. |
|
23.09.2010, 15:02 | #15 |
Участник
|
а если отказаться от такой постановки и сделать по аналогии с профилями разноски (жкс еще имеет ту же схему) - скорее всего параметры конечны и имеют группировку
поля на таблице itmRelation - Все, ГруппаНом, Нома, МояГруппа InventLocation - Все, Склад parmField - собственно параметр прозрачность сопровождения, минимум записей |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Помогите показать в одном гриде две таблицы | 12 | |||
Две таблицы в одном datasource | 10 | |||
Две таблицы в одном гриде | 3 | |||
Один DataSource на две таблицы | 14 | |||
Две таблицы - один grid!? | 3 |
|