Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение(Insert, Update)БД через DBGrid, проблема с ограниченями 
:(
    Опции темы
sobik
Дата 5.1.2009, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 21.3.2008
Где: Киев, Украина.

Репутация: нет
Всего: 1



Здравствуйте. Я изменяю БД( Акссес) через ДБГрид.  Возникает следующая проблема: в поля с ограничениями(в них можна засунуть значения только из другой таблички) есть возможность вставить "неправильное" значение. Как можна запретить такую вставку\редактирование?
PM MAIL   Вверх
Rodman
Дата 5.1.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Цитата(sobik @  5.1.2009,  18:26 Найти цитируемый пост)
Как можна запретить такую вставку\редактирование? 

ну если у тебя правильно в аксессе стоит правильные настройки связей. том сам аксесс тебе не даст ввести не корректную инфу
PM MAIL WWW Skype GTalk YIM MSN   Вверх
sobik
Дата 6.1.2009, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 21.3.2008
Где: Киев, Украина.

Репутация: нет
Всего: 1



а может это быть из-за того, что аксесс не проверяет связи в таблицах?
PM MAIL   Вверх
sobik
Дата 6.1.2009, 16:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 21.3.2008
Где: Киев, Украина.

Репутация: нет
Всего: 1



Действительно, если поставить условие "сохранения целостности данных" на связях в БД, то при вводе неправильного значения вылетает эксепшен
PM MAIL   Вверх
morpheyushka
Дата 6.1.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: нет
Всего: 8



Цитата(sobik @  6.1.2009,  16:35 Найти цитируемый пост)
Действительно, если поставить условие "сохранения целостности данных" на связях в БД, то при вводе неправильного значения вылетает эксепшен 

Ну вот - тогда либо перед изменением данных делай проверку (во время редактирования на форме), либо отлавливай свой Exception, он в этих случаях один и тот же будет, и говори пользователю все, что ты про него думаешь smile 


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
sobik
Дата 6.1.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 21.3.2008
Где: Киев, Украина.

Репутация: нет
Всего: 1



morpheyushka, 

Я делаю проверку изменений. А вот как отлавливать эксепшн в даном случае, не знаю(первая идея была именно эта).  Как это делать? Использовать try? Так мне неизвестно где этот эксепшн возникает. Может, Вы подскажите?

Это сообщение отредактировал(а) sobik - 6.1.2009, 17:58
PM MAIL   Вверх
Dobermann
Дата 6.1.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Ye раз ты вводишь, то наверное EInOutError
PM   Вверх
morpheyushka
Дата 6.1.2009, 18:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: нет
Всего: 8



вот пример:
Код

...
try
  //запись в БД
except
  on E: Exception do
    if E.ClassName = 'EInOutError' then
       ShowMessage('Вводите правильные значения!');
end;
...


а в обще имя класса екзепшена в сообщение, которое у тебя вылетает можно посмотреть.
а место ошибки при отладки найди (для самого себя - в будущем пригодится!)

ЗЫ За код не бейте - первое что в голову пришло, лучше просто поправьте smile  

Это сообщение отредактировал(а) morpheyushka - 6.1.2009, 18:20


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
sobik
Дата 6.1.2009, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 21.3.2008
Где: Киев, Украина.

Репутация: нет
Всего: 1



Это понятно, но вот где этот код поместить? при генерации какого -то ивента? Или когда? И еще вопрос на засыпку, как сделать в ДБГриде активной ту ячейку что я хочу( например, предыдущую)?
PM MAIL   Вверх
morpheyushka
Дата 6.1.2009, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: нет
Всего: 8



Цитата(sobik @  6.1.2009,  18:27 Найти цитируемый пост)
где этот код поместить?

при записи в БД

ну а если на подробности потянуло - через отладку локализуй место появление исключения и впихни туда обработку этого исключения


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
sobik
Дата 6.1.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 21.3.2008
Где: Киев, Украина.

Репутация: нет
Всего: 1



Спасибо, но я уже почти сделал через проверку. Как сделать, что бы фокус ввода вернулся на предыдущую ячейку?
PM MAIL   Вверх
Dobermann
Дата 6.1.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Shift+Tab!!!
PM   Вверх
sobik
Дата 6.1.2009, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 21.3.2008
Где: Киев, Украина.

Репутация: нет
Всего: 1



Я не это имел ввиду. Я сделал так, что при вводе неправильного значения появляется месседжбокс с предупрежденем, о том, что надо ввести корректное значение. Но при этом фокус ввода перескакивает на  следующую ячейку. Как его вернуть обратно?
PM MAIL   Вверх
Dobermann
Дата 6.1.2009, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Цитата(sobik @  6.1.2009,  19:41 Найти цитируемый пост)
Я сделал так, что при вводе неправильного значения появляется месседжбокс с предупрежденем, о том, что надо ввести корректное значение.

Вот после всего этого делай нужную ячейку активной
PM   Вверх
sobik
Дата 6.1.2009, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 21.3.2008
Где: Киев, Украина.

Репутация: нет
Всего: 1



А как это сделать? 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.