![]() |
|
|
![]()
|
|
| santilaas |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 322 Регистрация: 28.8.2005 Где: Блага Репутация: нет Всего: нет |
Ситуация такая: имеется форма, на ней DBGridEh и 3 кнопки (Кнопка1 - DM.DataSet1.Append, Кнопка2 - DM.DataSet1.Edit, Кнопка3 - DM.DataSet1.Delete). Поскольку форма содержит всего несколько полей, нет необходимости создавать для неё диалоговую форму ввода данных. Данные редактируются непосредственно в самом DBGridEh-е. Но тут у меня возникла проблема - как отслеживать правильность ввода данных (например, на случай уникальности значений одного из полей)?
т.е куда поставить блок try...except. -------------------- [ |
|||
|
||||
| TheCetus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 9.3.2006 Репутация: нет Всего: 2 |
try
// dm.dataset1.edit; // dm.dataset1.delete; dm.dataset1.append; except // dm.dataset1.cancel; // ничего не делаем dm.dataset1.cancel; end; |
|||
|
||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 2 Всего: 15 |
santilaas, опять не в тот форум залез
-------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
| santilaas |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 322 Регистрация: 28.8.2005 Где: Блага Репутация: нет Всего: нет |
Я вот думаю надо как-то проверять ошибки именно перед тем, как запись запостится. -------------------- [ |
|||
|
||||
| Юзверь |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 5.2.2006 Где: IF.UA Репутация: нет Всего: нет |
а события датасета "before post" или самого грида (не работал с таким)
а там ручками проверить? типа Onbeforepost try post except ........ end beforeInsert ............ или я не понял в чем проблема |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Переназнать Exception от Application
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| santilaas |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 322 Регистрация: 28.8.2005 Где: Блага Репутация: нет Всего: нет |
ругается на ShowMessage (говорит - неизвестная переменная, типа того) - мож это из-за того, что у меня MDI-приложение и DataSet активизируется при OnCreate Child-формы?! Все реально, когда есть дополнительная форма для ввода, и там, если нажата "OK", тогда выполняется код:
- а чтобы в DBGrid-е? -------------------- [ |
||||
|
|||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
Сейчас будет много не согласных, но при вводе данных напрямую в грид обеспечить нормальную работу программы чрезвычайно сложно, а если строить грамотную обработку ошибок, так это выходит просто колоссальный труд. Мой вам совет не ленитесь, создавайте формы редактирования.
Но если уж так прям, приспичило, то у каждого поля (field) существует обработчик OnValidate
Добавлено @ 01:42 У компонентов DataSet есть событие OnPostError Это сообщение отредактировал(а) Alex - 10.5.2006, 01:45 -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| santilaas |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 322 Регистрация: 28.8.2005 Где: Блага Репутация: нет Всего: нет |
Спасибо, за советы, но все же:
в нескольких случаях я не хочу делать дополнительных форма ввода данных и редактирую данные в самом DBGridEh-е: А вопрос у меня такой: в onBeforePost соответствующего DataSet-а проверяю значение поля на Null - всё работает, а как там же проверить это значение на уникальность (т.е если такое значение уже есть в таблице, вывести сообщение) - сравнивать в цикле со всеми записями (это я думаю не очень рациональный подход) или как-то по-другому? -------------------- [ |
|||
|
||||
![]()
|
| Правила форума "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. |