![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DELPHI:запрет на внесение повторных данных в таблицу БД [D7]
Koudelka © (2013-12-01 19:41:00)привет, ребят. Есть вопросик по поводу запрета на внесение повторных данных в таблицу БД (Delphi, DBGrid) в режиме редактирования записи.
Код, представленный ниже, полностью рабочий, однако у меня он работает как надо только для ДОБАВЛЕНИЯ ЗАПИСИ, для РЕДАКТИРОВАНИЯ уже существующей записи он работает неправильно, т.к. он проверяет методом locate на дубликат записи, ВКЛЮЧАЯ ТЕКУЩУЮ,КОТОРУЮ МЫ В ДАННЫЙ МОМЕНТ РЕДАКТИРУЕМ, чего быть не должно! Как этого избежать?то есть ИСКЛЮЧИТЬ ИЗ ПОИСКА Locate ТЕКУЩУЮ запись, которую мы редактируем в данный момент?!
procedure TForm1.BitBtnSAVECHANGESClick(Sender: TObject);
var LocOpts:TLocateOptions;
LocFields: String;
LocValues: Variant;
begin
IF (Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '') then ShowMessage('There is an empty field! please check!') {предупреждение о пустых полях}
ELSE begin
IF (DataModule2.Table6.Locate('ID_Ylici' , Edit1.Text , LocOpts)=True) or {проверка на дубликат записи, вот тут и нужно исключить проверку по текущей записи}
(DataModule2.Table6.Locate('Ylica_N_doma' , Edit2.Text , LocOpts)=True) or
(DataModule2.Table6.Locate('Pochtovii_index' , Edit3.Text , LocOpts)=True)
THEN ShowMessage('Duplicate record or ID is found. Please check and try again!')
ELSE begin
DataModule2.Table6.Edit;
DataModule2.Table6.FieldByName('ID_Ylici').AsString:=Edit1.Text;
DataModule2.Table6.FieldByName('Ylica_N_doma').AsString:=Edit2.Text;
DataModule2.Table6.FieldByName('Pochtovii_index').AsString:=Edit3.Text;
DataModule2.Table6.Post;
Edit1.Clear; Edit2.Clear; Edit3.Clear;
end;end;end;end;end;
sniknik (2013-12-02 08:00:00) [1]раздражают воинствующие ламеры.
brother (2013-12-02 05:13:00) [2]странно, что темку ущу не колуз...
Koudelka (2013-12-02 03:14:00) [3]Удалено модератором
Примечание: Я предупреждал, с этим на помойку
Koudelka (2013-12-02 03:14:00) [4]Удалено модератором
Примечание: Теме даун
Jeer (2013-12-02 01:23:00) [5]Все надлежащее сказано чуть выше.
Если это вне рамок вашего понимания - читать учебники по БД.
Koudelka (2013-12-02 00:05:00) [6]Необходимо осуществить проверку ключа только при его изменении(добавление нового ключа)
Koudelka (2013-12-02 00:02:00) [7]Удалено модератором
Примечание: Повежливей
Jeer (2013-12-01 22:46:00) [8]Переводя с греческого на арамейский, могу дополнить парой фраз на понятном ТС языке:
- может помочь уникальный индекс;
- до тех пор и пока запись не отредактирована на сервере логическим методом Post, ее вообще не существует, кроме воспаленного воображения юзера и его клиентского приложения.
[ВладОшин] (2013-12-01 22:04:00) [9]Это лучше сделать наложением ограничения на таблицу БД