Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запрещение вставки записи

2.0K
27 ноября 2002 года
evasya
8 / / 23.11.2002
Привет всем! У меня такой вопрос:
Допустим есть таблица с 2-мя полями: id_brak и brak
На форме присутствуют компоненты: DBGrid1, DataSource1, Query1, UpdateSQL1
Все они связаны друг с другом соответствующими связями.

Я хочу сделать так, чтобы пока я не заполню все поля в DBGrid1 нельзя
было создать новую запись.

Для этого, я в обработчик события Query1BeforeInsert вставляю след. код:

if ((DBGrid1->SelectedField->DataSet->FieldByName("brak")->AsInteger == NULL)||(DBGrid1->SelectedField->DataSet->FieldByName("id_brak")->AsInteger==NULL)) {
ShowMessage("Не все поля заполнены");
Query1->CachedUpdates = false;
Query1->CachedUpdates = true;
}
все вроде бы работает, но вот только если я, например, заполнил одно поле - brak и
не заполнил другое поле - id_brak, то соответственно при вставке новой записи
выходит сообщение, что не все поля заполнены и при этом стирается то, что я ввел в
поле brak (из-за строчек Query1->CachedUpdates = false; Query1->CachedUpdates = true;
лучшего я пока не придумал :-) ).
Набрать заново то, что я уже набирал конечно можно, но вот если полей очень много...

Как можно реализовать то, что я задумал?
Что можно написать вместо строчек:
Query1->CachedUpdates = false;
Query1->CachedUpdates = true;

Конструкции типа
Query1->First(); или
Query1->Prior(); или
Query1->MoveBy(1);
естественно не проходят.
т.е. как все-таки сделать так, чтобы вставка новой записи не прошла?

При этом, мне обязательно нужно использовать только эти компоненты:
DBGrid1, DataSource1, Query1, UpdateSQL1
(не используя компонент Table1)


С уважением.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог