Запрещение вставки записи
Допустим есть таблица с 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)
С уважением.