Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2009, 23:51   #1
mn-home
Новичок
Джуниор
 
Регистрация: 05.03.2009
Сообщений: 2
По умолчанию Редактирование данных БД, расположенных на разных формах

День добрый
подскажите, как можно реализовать следующую конструкцию:
на первой форме две сетки-в первой - информация о списке платежей, во второй - подчиненная таблица с информацией о получателях платежей - пока все получается
теперь нужно: при щелчке по получателю - раскрывается доп. форма, где можно редактировать данные выбранного получателя (и кнопочка - следующий, чтобы не выходя можно было перейти к следующему получателю из списка) - как в этой форме получить доступ к базе, открытой в первой форме?
или нужно снова накидать компоненты-открыть в этой форме базу и просто перейти на нужную запись? - как-то громоздко тогда и некрасиво получается
спасибо всем, кто откликнется
mn-home вне форума Ответить с цитированием
Старый 06.03.2009, 00:18   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Наиболее профессиональным (и удобным, кстати) выглядит следующий вариант (хотя, возможно, вы и отнесете его к "громоздким").
Дополнительная форма, на ней - набор эдитов (если нужно, дэйттаймпикеров и спинэдитов - по типу данных). И пара кнопок - "Принять" и "Отказаться" - можете придумать свои названия. Именно простых эдитов, а не датаконтролов. Вызывается сия форма при выборе "Новая запись" или "Редактировать".
При открытии формы для редактирования (или нажатии на дополнительные кнопки "Следующий" или "Предыдущий") - все компоненты вручную (в смысле вашей процедурой) заполняются из соответствующих полей таблиц. В режиме ввода новой записи - все обнулены.
По кнопке "Принять" либо создается новая запись и в ее поля заносятся соответствующие значения, либо в существующую опять-таки вручную вносятся изменения.
В случае нажатия кнопки "Отказаться" просто закрывается доп. форма.
"Следующий" или "Предыдущий" - так это же просто методы Next/Prior вашей таблицы (датасета).
Почему не напрямую в базе "ковыряемся"? Да все только ради того, чтобы не подпортить при аварийных завершениях, да и держать запись в режиме редактирования (особенно в многопользовательской среде) не есть "хорошо".
Цитата:
как в этой форме получить доступ к базе, открытой в первой форме?
Наверное не к базе, а к таблице платежей?
Ну, у вас же эти таблицы по какому-то полю связаны? Наверное, по идентификатору платежа?
Ну и сделайте локэйт в таблице платежей по идентификатору из таблицы получателей...

Последний раз редактировалось mihali4; 06.03.2009 в 00:56.
mihali4 вне форума Ответить с цитированием
Старый 06.03.2009, 13:29   #3
mn-home
Новичок
Джуниор
 
Регистрация: 05.03.2009
Сообщений: 2
По умолчанию

спасибо
ясненько
я пока бежал на работу тоже подумал про подобный вариант, но опять же - я думал есть способ проще и "эллегантнее"

есть мысль - на одной форме просто положить закладки и при выборе из grid для редактировнаия - просто переключиться в той же форме на закладку, где будут размещены компоненты для редактирования записи
mn-home вне форума Ответить с цитированием
Старый 06.03.2009, 13:38   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Конечно, можно и закладками. Но...
- "юзер" может и запаниковать, случайно (или из любопытства) ткнув в закладку редактирования или, того хуже, добавления новой записи (мало кто "учит матчасть" перед использованием программы).
- если таблиц-справочников много - получается ненужное утяжеление основной рабочей формы, в то время как отдельные формочки не висят бесполезным грузом в памяти, а создаются и освобождаются по мере необходимости.
- слишком большие "возможности выбора", постоянно присутствующие перед глазами, дезориентируют неподготовленного пользователя и отвлекают внимание.
Поэтому я всегда советую попап-меню, привязанное к конкретному дбгриду.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод данных в разных падежах с access. sashaslam БД в Delphi 3 28.05.2010 22:48
Помогите плиз правильно написать макрос обновления данных из разных файлов Legame Microsoft Office Excel 10 10.09.2009 10:39
Сложение данных в разных ячейках viter.alex Microsoft Office Excel 20 14.01.2009 18:30
SQL запрос и редактирование данных Dux БД в Delphi 7 01.09.2008 12:17