Форум: "Начинающим";
Текущий архив: 2014.12.21;
Скачать: [xml.tar.bz2];
ВнизDELPHI:запрет на внесение повторных данных в таблицу БД Найти похожие ветки
← →
Koudelka (2013-12-01 19:41) [0]привет, ребят. Есть вопросик по поводу запрета на внесение повторных данных в таблицу БД (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;
← →
[ВладОшин] © (2013-12-01 22:04) [1]Это лучше сделать наложением ограничения на таблицу БД
← →
Jeer © (2013-12-01 22:46) [2]Переводя с греческого на арамейский, могу дополнить парой фраз на понятном ТС языке:
- может помочь уникальный индекс;
- до тех пор и пока запись не отредактирована на сервере логическим методом Post, ее вообще не существует, кроме воспаленного воображения юзера и его клиентского приложения.
← →
Koudelka (2013-12-02 00:02) [3]Удалено модератором
Примечание: Повежливей
← →
Koudelka (2013-12-02 00:05) [4]Необходимо осуществить проверку ключа только при его изменении(добавление нового ключа)
← →
Jeer © (2013-12-02 01:23) [5]Все надлежащее сказано чуть выше.
Если это вне рамок вашего понимания - читать учебники по БД.
← →
Koudelka (2013-12-02 03:14) [6]Удалено модератором
Примечание: Я предупреждал, с этим на помойку
← →
Koudelka (2013-12-02 03:14) [7]Удалено модератором
Примечание: Теме даун
← →
brother © (2013-12-02 05:13) [8]странно, что темку ущу не колуз...
← →
sniknik © (2013-12-02 08:00) [9]раздражают воинствующие ламеры.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2014.12.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c