Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.03.2009, 13:04
BetaCoder BetaCoder вне форума
Прохожий
 
Регистрация: 03.03.2009
Сообщения: 16
Репутация: 10
Печаль Как удалить из ADOTable дублирующиеся записи

Доброго времени суток всем!
У меня вот какой вопрос:

Данные хранятся в файле .mdb, использую ADOTable и DATASource.
База - Rss, таблица - Link. В таблице записываются ссылки, но бывает что они дублируются, а мне надо чтобы в таблице не было повторяющихся ссылок.

Код, который добавляет в базу данные:
Код:
 adotable1.Insert;
   title.value:=_node.selectnodes('//item').item[i].selectSingleNode('title').Text;
   link.value:=_node.selectnodes('//item').item[i].selectSingleNode('link').Text;
   description.Value:=_node.selectnodes('//item').item[i].selectSingleNode('description').Text;
   pubDate.Value:=_node.selectnodes('//item').item[i].selectSingleNode('pubDate').Text;

   adotable1.Post;
Мне надо, чтобы при добавлении данных проверялось, есть ли такая ссылка в базе или нет, если есть до добавляем, если нет, то не добавляем.

Помогите пожалуйста
Ответить с цитированием
  #2  
Старый 03.03.2009, 14:43
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,034
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Проще поставить на это поле уникальный констрейнт. В этом случае при попытке добавить запись с уже существующим в указанном поле значением, ты получишь ошибку. Правда, это работает только с учетеом регистра символов (по моему, нельзя заставить БД не учитывать регистр для одного поля). Как вариант, принудительно приводить ссылку в одному регистру при вставке в БД.

Еще один вариант - перед вставкой в БД просто проверить кол-во записей с указанными даными. Т.е. делаешь запрос с COUNT и смотришт результат. Если 0, то добавляем, если > 0, то нет.
Ответить с цитированием
  #3  
Старый 04.04.2009, 00:42
BetaCoder BetaCoder вне форума
Прохожий
 
Регистрация: 03.03.2009
Сообщения: 16
Репутация: 10
По умолчанию

А можете привести пример, как это сделать? Это код не я писал, он у меня моими функциями оброс, но с АДО, да и вообще с запросами в БД я плохо знаком.

НАпишите на примере для таблицы "Товар", в которой по полю "Номер" должно проверяться наличие такого номера в таблице.

То есть поле номер не должно повторяться.

Надеюсь я не сильно намудрил ... ночь все таки, а делать надо...
Ответить с цитированием
  #4  
Старый 04.04.2009, 02:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Откройте вашу базу в акцесе. Найдите таблицу о которой идет речь. Сделайте уникальный индекс по нужному полю, но имейте ввиду, что если таблица уже содержит данные и там есть дубликаты, то уникальный индекс построить неудасться пока не приведете таблицу в порядок.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:10.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter