![]() |
|
|
![]()
|
|
| sobik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 21.3.2008 Где: Киев, Украина. Репутация: нет Всего: 1 |
Здравствуйте. Я изменяю БД( Акссес) через ДБГрид. Возникает следующая проблема: в поля с ограничениями(в них можна засунуть значения только из другой таблички) есть возможность вставить "неправильное" значение. Как можна запретить такую вставку\редактирование?
|
|||
|
||||
| Rodman |
|
|||
|
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 22 Всего: 122 |
ну если у тебя правильно в аксессе стоит правильные настройки связей. том сам аксесс тебе не даст ввести не корректную инфу |
|||
|
||||
| sobik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 21.3.2008 Где: Киев, Украина. Репутация: нет Всего: 1 |
а может это быть из-за того, что аксесс не проверяет связи в таблицах?
|
|||
|
||||
| sobik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 21.3.2008 Где: Киев, Украина. Репутация: нет Всего: 1 |
Действительно, если поставить условие "сохранения целостности данных" на связях в БД, то при вводе неправильного значения вылетает эксепшен
|
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: нет Всего: 8 |
Ну вот - тогда либо перед изменением данных делай проверку (во время редактирования на форме), либо отлавливай свой Exception, он в этих случаях один и тот же будет, и говори пользователю все, что ты про него думаешь |
|||
|
||||
| sobik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 21.3.2008 Где: Киев, Украина. Репутация: нет Всего: 1 |
morpheyushka,
Я делаю проверку изменений. А вот как отлавливать эксепшн в даном случае, не знаю(первая идея была именно эта). Как это делать? Использовать try? Так мне неизвестно где этот эксепшн возникает. Может, Вы подскажите? Это сообщение отредактировал(а) sobik - 6.1.2009, 17:58 |
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
Ye раз ты вводишь, то наверное EInOutError
|
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: нет Всего: 8 |
вот пример:
а в обще имя класса екзепшена в сообщение, которое у тебя вылетает можно посмотреть. а место ошибки при отладки найди (для самого себя - в будущем пригодится!) ЗЫ За код не бейте - первое что в голову пришло, лучше просто поправьте Это сообщение отредактировал(а) morpheyushka - 6.1.2009, 18:20 |
|||
|
||||
| sobik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 21.3.2008 Где: Киев, Украина. Репутация: нет Всего: 1 |
Это понятно, но вот где этот код поместить? при генерации какого -то ивента? Или когда? И еще вопрос на засыпку, как сделать в ДБГриде активной ту ячейку что я хочу( например, предыдущую)?
|
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: нет Всего: 8 |
при записи в БД ну а если на подробности потянуло - через отладку локализуй место появление исключения и впихни туда обработку этого исключения |
|||
|
||||
| sobik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 21.3.2008 Где: Киев, Украина. Репутация: нет Всего: 1 |
Спасибо, но я уже почти сделал через проверку. Как сделать, что бы фокус ввода вернулся на предыдущую ячейку?
|
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
Shift+Tab!!!
|
|||
|
||||
| sobik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 21.3.2008 Где: Киев, Украина. Репутация: нет Всего: 1 |
Я не это имел ввиду. Я сделал так, что при вводе неправильного значения появляется месседжбокс с предупрежденем, о том, что надо ввести корректное значение. Но при этом фокус ввода перескакивает на следующую ячейку. Как его вернуть обратно?
|
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
||||
|
||||
| sobik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 21.3.2008 Где: Киев, Украина. Репутация: нет Всего: 1 |
А как это сделать?
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |