Как в DELPHI обращаться к DBGrid.

маша 01.06.2004 - 16:43 | Как в DELPHI обращаться к DBGrid. Например я в DBGride ввожу в некий столбец данные но этот столбец является ключевым соответственно я не магу вводит два одинаковых строк а то это визвет ошибку, как делать чтобы при втором разе до сохранения он проверил вводимы данный.
x77 1 - 01.06.2004 - 16:57 | 1. DBGrid тут не причём, корректность ввода контролируется сервером. в случае с БДЕ его роль будут выполнять наборы данных (TTable, TQuery). Вот там и надо отлавливать ошибки. . 2. а зачем вообще проверять? чтобы вывести сообщение, типа, ничего не вышло? так можно просто перехватить OnPostError на уровне набора данных и вывести всё это там.
маша 2 - 01.06.2004 - 17:09 | А как именно делать это в OnPostError. Текст примерно можешь подсказать
x77 3 - 01.06.2004 - 17:40 | procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); begin ShowMessage ('Обломайся, ковырялка!!!'); Action := daAbort; end;
x77 4 - 01.06.2004 - 17:46 | собственно, это упрощённый вариант, который просто тупо выводит мессагу об ощибке. а можно сделат хитрее: . procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); var s: string; begin if InputQuery ('Ввод', 'Введите ключевое поле: ', s) then begin Table1KeyField.AsString := s; Action := daRetry; end else Action := daAbort; end; . в таком варианте при возникновении ошибке (предполагается, что она может произойти только из-за неверного ключа, хотя на самом деле причин может быть масса) юзверю будет предложено ввести новый ключ и таблица попытается снова вставить данные. и так будет до тех пор, пока он либон не откажется от ввода ключа (нажмёт "Отмену" на диалоге ввода), либо не будет введён нормальный ключ, с которым пройдёт вставка. .
FWP 5 - 02.06.2004 - 07:58 | И вообще давать пользователю возможность редактировать ключевое поле не есть хорошо. Значение в ключевое поле должна записывать программа. Или сервер БД.
RTFM 6 - 04.06.2004 - 02:46 | Можно еще try... except использовать
KAPACb 7 - 06.06.2004 - 15:41 | (0) Читай (5). Единственно верное решение. Если у тебя серверная БД, то делай сиквенс, в триггере записывай ключевое поле. Если файловая БД, то в обработчиках BeforeInsert записывай ключевое поле.

>>