Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.12.21;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.005 c
15-1400398597
dmk
2014-05-18 11:36
2014.12.21
HELP в Delphi XE6


2-1385971168
opashka
2013-12-02 11:59
2014.12.21
программа на координаты


2-1386065052
allrussia
2013-12-03 14:04
2014.12.21
код VBS конвертировать в Delphi


2-1385899743
cr@nk
2013-12-01 16:09
2014.12.21
Парсер большого XML


15-1400304929
Антоха
2014-05-17 09:35
2014.12.21
Ошибка "сервер Rpc не доступен"