Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];

Вниз

Как проверить колличество одинаковых записей в поле   Найти похожие ветки 

 
vodvorezlaya   (2006-09-21 13:01) [0]

Всем доброго времени суток.

Подскажите как проверить. После добавления записи в конец таблици (Append) существует там такая-же запись или нет?

Есть ли для этого специальный метод?

Спасибо.


 
Павел Калугин ©   (2006-09-21 13:05) [1]

А может логичнее проверять ДО добавления и не плодить дубликатов.


 
zdm ©   (2006-09-21 13:05) [2]

1. Уникальность полей.
2. Программно


 
Johnmen ©   (2006-09-21 13:05) [3]

Каков критерий "такая-же запись"?


 
Sergey13 ©   (2006-09-21 13:05) [4]

После добавления конечно же существует хотя бы одна. 8-)
Может тебе надо ДО проверять? Так это Locate или Select. Если ненужны дубликаты - уникальный индекс построй по полю.


 
zdm ©   (2006-09-21 13:08) [5]

джопустим добавляешь поле Name из компонента Edit
Select Name from Таблица  Where Name=QuotedStr(Edit1.text);
open;
if Fields[0].Asstring="" then такого значения нет, спокойно вноси данные else "данные уже существуют пошли в пень"


 
Desdechado ©   (2006-09-21 13:08) [6]

> колличество одинаковых записей в поле
?!!
в поле нет записей

уникальный индекс (констрейнт) + ловля исключений при попытке записи


 
zdm ©   (2006-09-21 13:10) [7]


> джопустим

:)


 
Johnmen ©   (2006-09-21 13:31) [8]


> zdm ©   (21.09.06 13:08) [5]
> джопустим добавляешь поле Name из компонента EditSelect
> Name from Таблица  Where Name=QuotedStr(Edit1.text);open;
> if Fields[0].Asstring="" then такого значения нет, спокойно
> вноси данные else "данные уже существуют пошли в пень"


А пока ты проверял, есть или нет, кто-то другой такую запись с таким значением поля добавил? Что делать? :)


 
zdm ©   (2006-09-21 13:33) [9]

а про транзакции ты слыхивал????


 
zdm ©   (2006-09-21 13:36) [10]

блин, я на другой волне PARADOX-же блин, ну ни как тогда!!!


 
zdm ©   (2006-09-21 13:37) [11]


> А пока ты проверял, есть или нет, кто-то другой такую запись
> с таким значением поля добавил? Что делать? :)

Хоть тайм-аут какой-нибудь придумывай, типа, опросил базу-данных нет, еще разок-нет,, ну вноси значения только быстро :)))))


 
zdm ©   (2006-09-21 13:42) [12]


> А пока ты проверял, есть или нет, кто-то другой такую запись
> с таким значением поля добавил? Что делать? :)


Хотя СТОП, если PARADOX, то как-бы это не сетевая БД и какие нахрен "другие вносят значения"?


 
Johnmen ©   (2006-09-21 13:50) [13]


> zdm ©   (21.09.06 13:33) [9]
> а про транзакции ты слыхивал????


Да, где-то что-то такое слышал, краем уха... :)
А что? Они как-то соотносятся с Парадоксом в целом и с [5] в частности?


 
Johnmen ©   (2006-09-21 13:53) [14]


> zdm ©   (21.09.06 13:42) [12]
> Хотя СТОП, если PARADOX, то как-бы это не сетевая БД и какие
> нахрен "другие вносят значения"?


Ну ты, наверное, знаешь, что Парадокс и в сети пользовать можно, не только монопольно...
Да чёрт с ним, с Парадоксом. Ты лучше про [5] и [8] растолкуй...:)


 
zdm ©   (2006-09-21 13:57) [15]


> Да чёрт с ним, с Парадоксом. Ты лучше про [5] и [8] растолкуй.
> ..:)

про [8]. Типа открываешь транзакцию, если конечно БД поддерживает, начинаешь выполнять какие-либо действия с данными базы, и пока не скажешь COMMIT-ни хрена не произойдет, а вот уже непосредственно перед COMMIT делаешь опрос на совпадение, иначе ROLLBACK


 
zdm ©   (2006-09-21 13:58) [16]

а про [5], ты что хотел узнать?


 
Johnmen ©   (2006-09-21 14:08) [17]


> zdm ©   (21.09.06 13:57) [15]
>  а вот уже непосредственно перед COMMIT делаешь опрос на
> совпадение,


Ну сделал ты запрос. Время 00:00:00:000
Получил результаты, проанализировал, принял решение. Время 00:00::00:007
А я в этом промежутке времени вставил и закоммитил запись с тем же значением поля, на которое ты проверял и не нашёл.
Что делать? :)


 
Sergey13 ©   (2006-09-21 14:12) [18]

> [17] Johnmen ©   (21.09.06 14:08)

Ну ты и шустрый. В 7 милисекунд все дело испортил. 8-)


 
zdm ©   (2006-09-21 14:14) [19]

не стоп, лажа, ты чего вообще хочешь опровергнуть всю теорию построения реляционных БД, что-ли? Я прикалывался про тайм-ауты конечно, идеального варианта естественно не существует (мы тут с тобой какой-то философией занялись) если я вношу данные и говорю комит и ты одновременно вносишь точно такие-же данные, БД не даст кому-то из нас их внести, ну типа кто первый тот и прав...хотя... блин,,,,а вопрос действительно, ладно я щас подумаю еще просто некогда:)


 
Johnmen ©   (2006-09-21 14:29) [20]


> ты чего вообще хочешь опровергнуть всю теорию построения
> реляционных БД, что-ли?


Нет. С чего ты взял???
Я всего лишь хочу сказать, что [5] и [15] - вот так никто не делает. Ну из тех, кто знает вышеупомянутую теорию и про эти, как их, транзакции.

>Sergey13 ©   (21.09.06 14:12) [18]

Не, это не я, это сервер :) Я готовился в внесению записи долго, а в указанный промежуток только коммит скомандовал :)


 
zdm ©   (2006-09-21 14:31) [21]


> Johnmen

Не пудри мозги :)


 
vodvorezlaya   (2006-09-21 14:37) [22]


> джопустим добавляешь поле Name из компонента Edit
> Select Name from Таблица  Where Name=QuotedStr(Edit1.text);
>
> open;
> if Fields[0].Asstring="" then такого значения нет, спокойно
> вноси данные else "данные уже существуют пошли в пень"

Ну я понял вроде то, но что даст Name=QuotedStr(Edit1.text);?

А допустим что есть таблица в которой данные Fields[0] повторяются, только в ручную их переименовывать?
(Имею в виду сортировать и в цикле проверять соответствие)


 
zdm ©   (2006-09-21 14:38) [23]


> Я всего лишь хочу сказать, что [5] и [15] - вот так никто
> не делает. Ну из тех, кто знает вышеупомянутую теорию и
> про эти, как их, транзакции.


Хорош стебатся-то, я просто быстро предложил решение, не нравится не кушайте!


 
zdm ©   (2006-09-21 14:41) [24]

Name=QuotedStr(Edit1.text) даст допустим "Иванов Иван Иванович"
а Fields[0] это  для примера, ты говоришь повторяются, так что тебе надо-то чтобы не повоторялись, тогда удали повторяющиеся записи,,, а если нельзя, тогда в запросе говори "select distinct"


 
Johnmen ©   (2006-09-21 14:49) [25]


> Хорош стебатся-то, я просто быстро предложил решение, не
> нравится не кушайте!


Вот автор ветки и скушает. А потом придёт к тебе лицо бить за такие советы.
Спрашивается - тебе это надо?
:)


 
zdm ©   (2006-09-21 15:28) [26]

Блин, я хоть какое-то решение подсказал, а Вы вообще ни чего.
И что плохого в моем решении. Всегда можно опросить и на "чистое"  совпадение и на "похожесть", а уже дальше принимать решение , вносить данные или нет


 
Johnmen ©   (2006-09-21 15:43) [27]


> Блин, я хоть какое-то решение подсказал,


А что толку от кривого решения и кому оно надо?


> а Вы вообще ни чего.


Ну меряться пиписками я с Вами не буду. Видимо Вы сторонник персонажа из известного анекдота:
- У меня две новости, хорошая и плохая.
- Начни с плохой.
- В этом году неурожай, будем жрать г...о.
- А хорошая?
- Г...а много - всем хватит!


 
vodvorezlaya   (2006-09-21 16:00) [28]

А вообще есть в Delphi такой метод Lookup и locate.


 
Сергей М. ©   (2006-09-21 16:05) [29]


> vodvorezlaya   (21.09.06 16:00) [28]


В делфи мно-о-ого еще чего есть)

Ты в [6] вник ?


 
Mike Kouzmine ©   (2006-09-21 16:35) [30]

zdm ©   (21.09.06 15:28) [26]

Johnmen ©   (21.09.06 13:05) [3]
Каков критерий "такая-же запись"?


 
Anatoly Podgoretsky ©   (2006-09-21 21:31) [31]

Sergey13 ©   (21.09.06 14:12) [18]
Законы Мерфи непреодолимы.


 
Lex_! ©   (2006-09-22 06:05) [32]

А что нельзя разве сделать поле уникальным по определению?...
(индексация, без совпадений... )


 
vodvorezlaya   (2006-09-22 08:03) [33]


> Ты в [6] вник ?

Да, но это не первое ключевое поле.
Перед ним ещё два ключевых поля.А с этим третьим ключевым и при попытке дублирования записи не возникает Exception.


 
Сергей М. ©   (2006-09-22 08:34) [34]


> vodvorezlaya   (22.09.06 08:03) [33]


Да по барабану первое оно у тебя или столохматое !
Важно чтобы для значений в этом поле был создан и активирован уникальный индекс. И если у тебя при попытке внесения в это поле неуникальной записи не возбуждается исключение, то это означает, что либо индекса такого и в помине нет, либо индекс этот неуникальный, либо он не активирован.
При соблюдении этих условий исключение будет обязательно возбуждено.


 
evvcom ©   (2006-09-22 09:12) [35]

> [24] zdm ©   (21.09.06 14:41)

А тебе нужен в твоем случае просто Иван Иваныч, или все же ты что-то про нормализацию слышал? ID этого Ивана Иваныча получать будешь? И что тогда тебе select distinct даст? Ась? :-)

> [22] vodvorezlaya   (21.09.06 14:37)
> Ну я понял вроде то, но что даст Name=QuotedStr(Edit1.text)

Понял и молодец! Только лучше так не делай. Используй параметры, учись сразу программировать "правильно"!


 
zdm ©   (2006-09-22 09:43) [36]

С уникальностью полей тоже засада бывает.
1. Иванов Иван и иванов иВаН это разные данные для БД.
2. Lexx, про уникальность сразу писали

> evvcom ©  

С параметрами, при запросах с большой вложенностью, бывает засада, хотя я конечно не спорю, что параметры юзать легче и проще.


 
Sergey13 ©   (2006-09-22 09:53) [37]

> [36] zdm ©   (22.09.06 09:43)
> С параметрами, при запросах с большой вложенностью, бывает засада
Какая? И насколько большой должна быть вложенность (вложенность чего, кстати), что бы на нее напороться?


 
Johnmen ©   (2006-09-22 10:09) [38]


> zdm ©   (22.09.06 09:43) [36]
> С уникальностью полей тоже засада бывает.1. Иванов Иван
> и иванов иВаН это разные данные для БД.


Засада бывает у тех, кто не побеспокоился. А кто выставил правильные настройки (напр.не различать регистра) или в структуре таблиц учёл или в клиентском приложении, у того всё комильфо...


 
zdm ©   (2006-09-22 10:51) [39]


> Johnmen ©  

как выставить, различение регистра? правда не нашел, заранее спасибо


 
Johnmen ©   (2006-09-22 10:59) [40]


> zdm ©   (22.09.06 10:51) [39]
> как выставить, различение регистра? правда
> не нашел, заранее спасибо


Для Парадокса никак.
Мы же говорим общё, о серверах БД. Для некоторых это возможно....



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.049 c
15-1162985787
Сатир
2006-11-08 14:36
2006.11.26
Загадка


15-1162910907
maksmib
2006-11-07 17:48
2006.11.26
Mirasoft HR Department..?


15-1162630426
Сэм
2006-11-04 11:53
2006.11.26
системный лоток (system tray).


15-1162981114
umbra
2006-11-08 13:18
2006.11.26
загадочный С


2-1162884446
Alex_AA
2006-11-07 10:27
2006.11.26
Изменение формата представления чисел





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский