Quantcast
Channel: SQL.ru: Firebird, InterBase
Viewing all articles
Browse latest Browse all 1677

Как не допустить попадание дублей в таблицу БД?

$
0
0
Код:

  //Проверка на то, что вносимое Физ. лицо уже есть в БД
  // Отдельно хватаем текущее значение Первичного ключа для Клиента:
  Curr_ID_CLIENT:=fmClients.fbClientsDataSet.FieldByName('ID_CLIENT').AsLargeInt;

  SQL:='SELECT COUNT(FIZ_SERNAME) FROM T_CLIENTS WHERE FIZ_PASSPORT_SERIA= ''' + PassportSeria + ''' AND  FIZ_PASSPORT_NUMBER= ''' + PassportNumber + '''';
  fbQuery.Close;
  fbQuery.Database:=fmClients.fbDatabase;
  fbQuery.Database.Connected:=true;
  fbQuery.SQL.Clear;
  fbQuery.SQL.Text:=SQL;
  fbQuery.ExecQuery;

ShowMessage(IntToStr(fbQuery.RecordCount));

if (fbQuery.RecordCount>1) then
   begin
    MessageDlg('Возникла ошибка. Клиент с введёнными Серией/Номером паспорта уже есть в базе данных!', mtError, [mbOK],0);
    edPassportSeria.SetFocus;
    fbQuery.Database.Connected:=false;
    exit;
  end
  else
// далее – изменение данных в таблице


Фишка в том, что в БД, в таблице T_CLIENTS, есть два клиента с одинаковыми сериями и номерами паспортов, но строка:

ShowMessage(IntToStr(fbQuery.RecordCount));


Упорно выдаёт, что записей, удовлетворяющих SQL-запросу всего 1. В чем я ошибся?

Viewing all articles
Browse latest Browse all 1677

Latest Images

Trending Articles