![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Serggggg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.12.2003 Где: Донецк, Украина Репутация: нет Всего: нет |
Снова нужен help!
В MSAccess есть такое понятие, как подчинённая форма. Передо мной стоит вопрос о реализации такой же задачи в Delphi. Т.е. есть 2 таблицы - скажем так, "шапка" документа и его однотипное содержание. Таблицы связаны между собой по ID. Шапка заполняется посредством компонентов TDBEdit и TDBLookupComboBox. А однотипное содержание документа - это Grid. При переходе по записям "шапки" в Grid'e надо динамически отображать соответствующее содержание (n записей с тем же ID, что и у "шапки"). Как мне лучше поступить с Grid'ом? Применить запрос или же таблицу с фильтром? И если можно, скажите, в какие моменты лучше всего обновлять Grid. Простите, что допекаю элементарными вопросами, но это мой первый опыт работы с БД. --------------------
C уважением, Serggggg. |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Очень много зависит от размеров таблиц, где они находятся и прочая. В принципе в Delphi есть такая штука, как Master/Detail и ее можно использовать, но это нормально работает только для небольших таблиц.
Но лично я предпочитаю (я стараюсь даже на локальных таблицах использовать SQL для удобства дальнейшего расширения) следующую идею: На перемещение по мастер-набору вешается процедурка, которая запускает таймер. И уже сам таймер (по моим наблюдениям 0,7 секунды) должен сделать запрос к базе на получение подчиненных записей. И само собой остановить таймер. Следующее перемещение по мастер-набору запускает таймер опять и по таймауту получаем данные из детэйл. Здесь удобно то, что при быстром перемещении по мастер не происходит постоянное обращение к детэйл набору. А как только пользователь остановился дольше на какой-либо записи он получает данные для нее. |
|||
|
||||
| Serggggg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.12.2003 Где: Донецк, Украина Репутация: нет Всего: нет |
Хорошо, допустим, это запрос.
А как мне вводить и редактировать подчинённые записи? Использовать ещё 1 запрос на обновление или добавление? --------------------
C уважением, Serggggg. |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Я делаю именно так. Тут даже два запроса - INSERT и UPDATE |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |