Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

редактирование в гриде. [D6, XP]


DROWSY ©   (2010-04-28 21:33:00) 

Можно ли как-то организовать редактирование в гриде набора из полей двух таблиц, связанных внутренним соединением( по первичному и внешнему ключам). (Firebird 1.5, IBX)


Sergey13   (2010-04-30 09:32:00) [1]

> [14] DROWSY   (29.04.10 18:11)

Нельзя объять необъятное. (с) К.Прутков.

Ты по моему пересмотрел фильмов типа "Матрицы". Грид - это плоская штука. В нем конечно можно попробовать отобразить нечто объемное, но это будет только проекция объема на плоскость, т.е. штука малопонятная и неудобоваримая.
Все что ты хочешь легко (и главное правильно!) можно сделать на одной форме (если уж хочется концентрации), но в разных гридах и датасетах. Причем даже в этом случае придется отдельно рассматривать варианты, когда (в твоем случае) работа идет "от элемента" и "от набора".
Ты же пытаешься сначала все свалить в кучу и тут-же, хитрыми способами, разбивать эту кучу на составляющие. Это как минимум не очень разумно.

Для решения твоей задачи на твоих же условиях, можно, как вариант, в модифицирующий запрос датасета прописать выполнение ХП, в которой и разруливать ситуацию.

Но правильнее все таки будет пересмотреть подход к решению.


DROWSY   (2010-04-29 18:11:00) [2]

Смысл в том, чтобы в одной таблице видеть ВСЮ номенклатуру имеющихся элементов и информацию о том, какие из них входят в КОНКРЕТНЫЙ набор.
И иметь возможность редактировать как общую для ВСЕХ наборов номенклатуру(таблица TabEl), так и состав ЭТОГО набора(таблица TabNab).


Sergey13   (2010-04-29 17:47:00) [3]

> [12] DROWSY   (29.04.10 17:32)
> В таблице наборов TabNab только 3 поля:
> автоинкрементный ключ, код набора, код элемента Таблицы
> TabEl, входящего в данный набор.

Так это и есть та, "третья" таблица, про которую я говорил, только с лишним полем "ключ" (хотя это конечно по вкусу). Я так понял, что еще есть таблица, где "код набора" является первичным ключем?

> Нужно как-то так, чтобы в гриде редактировать обе таблицы,
А я по прежнему не могу представить себе смысла этого действия. Как впрочем и внешнего вида грида, где совмещены все "карандаши, ластики, ручки" и все "пеналы", их содержащие.
8-)


DROWSY   (2010-04-29 17:32:00) [4]

В таблице наборов TabNab только 3 поля:
автоинкрементный ключ, код набора, код элемента Таблицы TabEl, входящего в данный набор.

Нужно как-то так, чтобы в гриде редактировать обе таблицы, т.е.
что-то типа Left Joint для первой и второй таблиц.


Sergey13   (2010-04-29 17:14:00) [5]

> [9] DROWSY   (29.04.10 17:08)

Я что то не понял. У тебя в таблице наборов есть отдельные поля под все возможные элементы что ли?
Вообще обычно это делают через третью таблицу связи, т.к. получается классическое отношение многие-ко-многим.


DROWSY   (2010-04-29 17:11:00) [6]

Например, элементы : карандаши, ластики, ручки. Нужно "собирать" пеналы из этих штук.


DROWSY   (2010-04-29 17:08:00) [7]

Нет, не то.
Мне надо редактировать не только элементы, но и открытый набор (отмечать или отменять вхождение элемента в этот набор).


Sergey13   (2010-04-29 17:02:00) [8]

> [7] DROWSY   (29.04.10 16:58)

Ну так причем тут тогда таблица с наборами? Меняй свои элементы как заблагорассудится. Потом переоткрой датасет с наборами и удивись что все готово.
ЗЫ: Разумеется если ты не ключи менять будешь. 8-)


DROWSY   (2010-04-29 16:58:00) [9]

Именно это и нужно. Элементы во всех наборах одни и те же.
Нужно менять только их "номенклатуру" в наборах.


Sergey13   (2010-04-29 16:54:00) [10]

> [4] DROWSY   (29.04.10 16:45)

Ну так ты отдаешь себе отчет в том, что поправив описание конкретного элемента, этот элемент "поправится" ВО ВСЕХ наборах элементов, куда он входит?
Может тебе все таки Мастер-Детальное соединение нужно?


DROWSY   (2010-04-29 16:53:00) [11]

Ничего не придумал, кроме того, чтобы в таб. элементов TabEl ввести поле флага Active.
После открытия набора из полей TabEl, пройтись по всем записям и помечать Active, если код элемента входит в набор.
После редактирования, снова пройти по записям, сбрасывая коды активных записей, в таблицу наборов.
Уверен, что можно сделать красивше. Посоветуйте...


DROWSY   (2010-04-29 16:45:00) [12]

Есть таблица с описанием разных элементов. И таблица, в которой описываются наборы из этих элементов ( поля : код набора, значение внешнего ключа элемента, входящего в набор). Вопрос в том, как правильнее организовать редактирование  выбранного набора в гриде.


Anatoly Podgoretsky   (2010-04-29 12:21:00) [13]

> Sergey13  (29.04.2010 10:32:02)  [2]

Какая разница, можно и сразу обе, а можно и по очереди.


Sergey13   (2010-04-29 10:32:00) [14]

> [0] DROWSY   (28.04.10 21:33)

Редактировать надо сразу обе таблицы или таки одну из двух?


Игорь Шевченко   (2010-04-28 21:47:00) [15]

не вижу причины для невозможности. UpdateSQL или как его там...


Наверх

Титульная страница Поиск, карта сайта Написать письмо