Текущий архив: 2004.08.15;
Скачать: CL | DM;
Вниз
Поиск записи аналогичной искомой Найти похожие ветки
← →
Ata133 © (2004-07-16 16:15) [0]Я уже писал раньше в форум, никто не отозвался (((
Моя программа автоматически "разбирает" строки и заносит в простенькую БД (1 таблица) записи. Как мне на этом этапе занесения проверить - есть ли уже такая запись в таблица или нет. При утвердительном ответе - не заносить, ну а если еще нету такой записи, то - занести! :).
Отбор на совпадение надо делать не по одному, а искать аж по 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.
← →
Jeer © (2004-07-16 17:54) [1]При добавлении новой записи вычислять хэш и записывать в доп. поле Hash, предварительно выполнив поиск на аналогичный хэш.
← →
Sandman25 © (2004-07-16 17:57) [2]В крайнем случае создаете уникальный индекс, пытаетесь лобавить, перехватываете исключение, анализируете его текст, если это key violation, то переходите к следующей записи.
Страницы: 1 вся ветка
Текущий архив: 2004.08.15;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.031 c