Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/32: Рейтинг темы: голосов - 32, средняя оценка - 4.78
 Аватар для Deemc
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91

Не допустить совпадений в бд

09.01.2010, 20:42. Показов 7500. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно, чтобы при добавлении записи в бд проверялось на наличие такой же записи и если такая уже есть выводилось сообщение об ошибке.
пытаюсь сделать таким образом:
Delphi
1
2
if DataModule25.ADONOUT.Locate('model_nout',dbEdit1.Text) then
if DataModule25.ADONOUTmodel_nout.AsString:=dbEdit1.Text then Showmessage('Уже есть такая запись');
Ничего не получается, что я делаю неправильно?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.01.2010, 20:42
Ответы с готовыми решениями:

Сравнить два бинарных файла и вывести в label количество не совпадений, или что нет не совпадений
Добрый день ! Прошу помощи в реализации задачи. В программе нужно сравнить два файла (разной длины, или одинаковой). Количество...

Поиск совпадений и действия в зависимости от наличия совпадений
Попытаюсь вкратце описать суть. Приходит список позиций с ценами. Необходимо проверить артикул на наличие совпадений с базой и 1) Если...

Не допустить перенос блока
Имеется четыре блока в строку. Находятся они внутри колонки равной половине страницы. Если увеличить отступ между ними, четвертый сползает...

53
 Аватар для Deemc
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91
13.01.2010, 20:48  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от fedorrer Посмотреть сообщение
у тебя там уже одинаковых записей полно
Очистил полностью БД. Изменил на p:=vartostr(datamodule25.ADONOUT.Lookup( 'model_nou t',edit1.Text,'model_nout')); При добавлении любой записи выдает, что запись существует и закрывает форму.
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
14.01.2010, 08:55
Deemc, какой тип у поля куда ты добавляешь?
0
1 / 1 / 0
Регистрация: 09.01.2010
Сообщений: 6
14.01.2010, 14:45
Deemc напиши весь код процедуры после, которого начинается обработка событий. Я бы убрал (пока не начнет работать проверка уникальности) из кода (DataModule25.adonout.Cancel;), а обработку бы начал с добавления записи (DataModule25.adonout.Append;), а только потом проверку условия (далее твой код) и только после уже сохранение полученного результата (DataModule25.adonout.Post;).
0
 Аватар для Deemc
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91
15.01.2010, 00:02  [ТС]
Цитата Сообщение от DenProx Посмотреть сообщение
какой тип у поля куда ты добавляешь?
текстовый
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
15.01.2010, 06:54
Цитата Сообщение от Deemc Посмотреть сообщение
текстовый
ну а хранится в нем должна какая инфа, не понятно просто зачем - VarToStr, использовать... попробую накидать небльшой пример...
0
 Аватар для Deemc
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91
15.01.2010, 18:09  [ТС]
Цитата Сообщение от DenProx Посмотреть сообщение
попробую накидать небльшой пример..
спасибо жду
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
16.01.2010, 08:42
Вот как то так, пример простой но думаю нагляный будет...
Вложения
Тип файла: rar Primer.rar (325.1 Кб, 142 просмотров)
2
 Аватар для Deemc
4 / 4 / 4
Регистрация: 05.05.2009
Сообщений: 91
16.01.2010, 12:19  [ТС]
DenProx, спасибо огромное, выручил
0
105 / 104 / 9
Регистрация: 10.01.2010
Сообщений: 392
17.01.2010, 01:02
Топикстартер!
Если речь идет о базе данных, то решение - уникальный ключ! Уникальность записи - первичная задача самого СУБД.
Совет по лукапам и т.д. работает только при заполнении базы >100 записей.
Если записей будет 1000+, и сеть ляжет и клиенты и сервер в том числе.
0
FUHRER_1
18.02.2010, 12:24
Делай через обычные Эдиты и все будет работать )))
21 / 21 / 8
Регистрация: 07.01.2009
Сообщений: 556
12.11.2011, 19:44
Я возлагаю такую проверку на саму БД делая нужное поле уникальным. Но как мне перехватить прогой исключение и как прога поймёт какую именно ошибку вернула БД?
Делаю на дэлфи7, технология АДО, база мдб.
Делать вообще так?:
Delphi
1
2
3
4
5
6
7
8
      tbl1['Name']:=x;
      try
        tbl1.post;
      except
        tbl1.cancel;
        ShowMessage('Введённое значение уже существует!');
      end;
      finally;
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
13.11.2011, 08:45
Для другого форума разбирали как-то.
Pascal
1
2
3
4
5
6
7
8
try
    ADOQuery1.ExecSQL;
  except on e:exception do
  begin
    if  e.HelpContext = 5003022 then
      ShowMessage('Вы пытаетесь ввести дублирующее значение в поле');
  end;
  end;
Только тут есть небольшая проблема в том у Access'а похоже нет кодов ошибок либо он их не возвращает.
Поэтому обработчик построен на возврате e.HelpContext.
И еще у exception есть поля ClassName и Message.
Ты можешь их использовать

И еще при отлове ошибки в IDE ты в любом случае получишь сообщение Access'a.
Т.к. её тебе плюнет дебагер.

А вот если запустишь программу без IDE, то ошибки Acces'a уже не будет.
Вот на всякий случай. Хотя привел самого себя. :-)
1
4 / 4 / 4
Регистрация: 20.12.2010
Сообщений: 117
13.11.2011, 18:05
что то у меня выдает ошибку, мне нужно осуществить проверку по полю НФ на совпадение
вот тест
proverka:=ADOQuery1.Lookup('НФ',DBEdit1. Text,'НФ');
if proverka <> Null then
ShowMessage('такой нф уже есть');
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
14.11.2011, 04:52
Зачем городить огород.
Вот тот пример который описан постом выше. Накидал приложение.
Для потестить.
Вложения
Тип файла: zip _tst_.zip (881.2 Кб, 274 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2011, 04:52

Как не допустить перегрузку бд
Как удалять первые записи при превышении лимита в 255 (или как убрать лимит), чтобы id сдвигался? Имеются ввиду сообщения в чате и записи...

Не допустить пустой Edit
Здравствуйте! Немножко описания. Есть эдит в который пользователь вводит число кратное 4 или 8 в зависимости от положения в чекбоксе...

Допустить ввод только чисел
Есть работа с структурами, надо ввести номер аудитории и вывести на экран, но можно вводить только числа, можете помочь как сделать? ...

Допустить ввод только цифр
Так и не нашел удобных функций контроля ввода. Вводится символьная строка (до 7 символов) Надо проверить что все символы цифры. ...

Допустить ввод только цифр
Обработка ошибок ввода вывода‎ Pascal. вообщем надо сделать так чтоб можно было вводить только цифры... если вводишь буквы чтоб выдовало...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
54
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru