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

Вниз

Проверка записи на уникальность   Найти похожие ветки 

 
Ata133 ©   (2004-06-23 16:52) [0]

Моя программа автоматически "разбирает" строки и заносит в простенькую БД (1 таблица) записи. Как мне на этом этапе занесения проверить - есть ли уже такая запись в таблица или нет. При утвердительном ответе - не заносить, ну а если еще нету такой записи, то - занести! :).


 
Anatoly Podgoretsky ©   (2004-06-23 16:54) [1]

Locate


 
Соловьев ©   (2004-06-23 16:56) [2]

создать уникальный индекс по полю и обрабатывать исключение.
Но если у тебя однопользовательская прога - то можешь запрос выполнить
select count(*) as cnt_xxx from table where field=xxx
и если он возвратит 0, то не вносить.


 
Mim1 ©   (2004-06-23 21:26) [3]

Вноси все подряд, потом distinct"ом выбереш и скопируеш в другую таблицу.


 
Наталия ©   (2004-06-24 06:55) [4]

>Mim1 ©   (23.06.04 21:26) [3]
Фу...


 
Mim1 ©   (2004-06-24 08:53) [5]


> [4] Наталия ©   (24.06.04 06:55)
> >Mim1 ©   (23.06.04 21:26) [3]
> Фу...

Бррр...


 
inic   (2004-06-24 10:46) [6]

В MS SQL Server работает:
if not exists (select f1 from tb where f1=11100)
insert into tb (f1, f2) values (11100, "fqwfqw")

Попробуй в Paradox


 
Ata133 ©   (2004-06-24 12:17) [7]

Спасибо всем. Distinct"ом пробовал изначально. Из-за этого-то проблема и возникла. Все равно бывает по 10 (абсолютно!) одинаковых записей. Заношу я посредством Post, или все-таки Insert"ом советуете?


 
Курдль ©   (2004-06-24 12:54) [8]


> Заношу я посредством Post, или все-таки Insert"ом советуете?

А Delet-ом не пробовали?


 
Ata133 ©   (2004-07-08 15:59) [9]

Дело в том, что надо не по одному полю делать отбор, а совпадение искать аж по 8 полям. Я делаю, как посоветовали выше:
If Not (tCargo.Locate("From_;To_;DateF;...",VarArrayOf([z.From_,z.To_,z.DateF, z.DateT, ...]),[])) Then ... ;
Первый аргумент - сравниваемые поля БД, второй - массив сформированных строк для будущего добавления (z - запись со структурой, аналогичной таблице БД). После Then, по идее, - занесение записи в таблицу. Теоретически правильно?

А вот на деле заносятся все записи. Такое впечатление, что неправильно воспринимаются русские символы (хотя может массив неправильно формируется или зведы не так расположены, или еще какая причина неизвестная), т.к. когда я попробывал сделать
If Not (tCargo.Locate("DateF",z.DateF,[])) Then ... ;
были занесены только неповторные записи. Как Вы уже, наверное, догадались, это поле имело тип Date. То же самое происходит по полям целого типа.

* Драйвер Ansi Cyrillic.



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

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

Наверх





Память: 0.46 MB
Время: 0.049 c
14-1089291333
DimKa
2004-07-08 16:55
2004.08.01
В какое время вы чаще бываете на данном сайте?


1-1090383199
Прямой
2004-07-21 08:13
2004.08.01
меню надо при нажатии на кнопку, лежащей на форме.


1-1090248783
serg128
2004-07-19 18:53
2004.08.01
как в TTreeView получить родительский узел?


1-1090409031
cvg
2004-07-21 15:23
2004.08.01
по функции postmessage


14-1089790623
ruslan
2004-07-14 11:37
2004.08.01
u menya est funksiya kak ispolzovat vipolnyat eqo





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский