![]() |
|
![]() ![]() ![]() |
|
Inga |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
Спасибо.
>Это признак того, что у Вас с логикой работы приложения не все впорядке. У меня простое приложение: один дбгрид с данными. Хочется предусмотреть любые не стандартный действия пользователя. |
|||
|
||||
Vyacheslav |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Начинаем с нуля. Любая даже очень хорошая программа может выдавать ошибки и их надо перехватывать. Цели перехвата могут быть совершенно разные(выдача осмысленного сообщения, журналирование ошибок и пр. пр.). Неужели для этого нужно делать перехват по каждому чиху. Естественно, нет, если по логике перехват по месту не нужен. Следовательно должно быть место цетрализованной обработки ошибок. Решаем это следующим образом
Кладем на форму ApplicationEvents и для начала организуем перехват ошибок вообще и от базы данных в частности
Для начала - это все. А весь остальной код убираем. Я не знаю, с какой БД Вы работаете, ну возможно, для нее предусмотрены производные классы от EDatabaseError, которые имеют дополнительную информацию, на основе которой можно выдать более подробные сообщения. Кроме того, желательно создать свой класс, производный от Exception , который должен нести дополнительную информацию( серьезность ошибки, файл и строка, где произошла ошибка), что бы опять же централизировать обработку ошибоки дать Вам возможность быстро находить бани при работе программы. Вот например как это выглядит у меня в одном из проектов
-------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
Inga |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 18.11.2005 Репутация: нет Всего: нет |
Да, круто и красиво.
![]() Я работаю с BDE (таблица Paradox). В книжках по БД (те которые у меня), такие красивые решения не описаны. ![]() |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Кстати пару замечаний по организации работы с БД.
Практика показывает, что редактирование непосредственно в гриде - плохой стиль. Вдвойне плохо, если программа в редактировании входит в автоматическом режиме, только потому, что сделан клик на поле ввода(AutoEdit==true). При работе с БД должен быть четко выделен момент начала редактирования и момент окончания редактирования с возможностью отказа от изменений. А посему грид только для просмотра, а редактирование надо реализовывать в отдельном окне. А в окне с гридом предусмотреть кнопки редактирования, добавления и возможно просмотра( если в гриде выводится не вся информация. Тогда обработчики кнопок у Вас будут выглядеть примерно так
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |