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

Вниз

Поиск в таблице   Найти похожие ветки 

 
JB   (2004-06-18 08:35) [0]

Проблема вот в чем, пользователь пытается добавить запись в таблицу, но при этом если такая запись уже существует, добавление необходимо игнопировать.


 
Наталия ©   (2004-06-18 08:57) [1]

И в чем проблема?
Проверить, если такая запись уже есть, то не добавлять новую?


 
Sergey13 ©   (2004-06-18 09:19) [2]

2JB   (18.06.04 08:35)  
Самое простое и универсальное решение - уникальный индекс на нужное поле + реакция в программе на исключительную ситуацию. На кодовые поля лучше ставить автоинкременты, что вообще исключает повтор. А вот на поля, заполняемые юзером (типа наименование фирмы) универсальных решений нет - только ручками.


 
sniknik ©   (2004-06-18 10:39) [3]

> И в чем проблема?
как в чем? готового кода нигде нет и компонента тоже.

Sergey13 ©   (18.06.04 09:19) [2]
с исключительными ситуациями это очень долго получится, особенно после того как таблица заполнится почти полностью всеми имеюшимися значениями. гораздо быстрее предварительный поиск значения, по индексу естественно, благо аксесс это позволяет (функция Seek), нашол дальше нет добавляеш.


 
Sergey13 ©   (2004-06-18 10:52) [4]

2sniknik ©   (18.06.04 10:39) [3]
>с исключительными ситуациями это очень долго получится...
Почему? При фиксации записи, ИМХО, произойдет именно то что ты описал - поиск по индексу и облом при нахождении. Только поиск этот будет на уровне БД(движка), а не приложения.
И потом если искать каждый раз при внесении новой записи, то получится мартышкин труд для 99% случаев, если конечно не предполагать что юзер упорно вводит только то, что уже есть.


 
sniknik ©   (2004-06-18 11:34) [5]

Sergey13 ©   (18.06.04 10:52) [4]
ну может быть, спорить не буду, тестить неохота.

> И потом если искать каждый раз при внесении новой записи, то получится мартышкин труд для 99% случаев, если конечно не предполагать что
> юзер упорно вводит только то, что уже есть.
от задачи зависит. например у меня именно так и получается, идет передача данных добавление/изменение даннные с офиса обновляют данные на местах и единственно возможный путь посылать все даже если в накладной поправлено 1 значение. (может в массе на местах уже все это есть и достаточно 1 записи, но посылается всем т.к. когото может этой накладной не быть совсем. да и просто для гарантий посылают повторы (т.е. в 99% лопатятся именно имеющиеся уже данные), да хотя посылается накладная в базе хранятся товары,  получается после какогото периода (база наполнилась) добавлений нет совсем, только редактирование)
когда это реализовавал, выбрал самое быстрое что тогда нашол (с поиском). сейчас не буду переделывать даже если с исключениями будет быстрее (в чем сомневаюсь)


 
Sergey13 ©   (2004-06-18 11:44) [6]

2sniknik ©   (18.06.04 11:34) [5]
Ты описал, ИМХО, абсолютно другой случай. У автора ручной ввод, а у тебя, как я понял, самописная репликация. Естественно там другие подходы вообще.

>сейчас не буду переделывать даже если с исключениями будет быстрее (в чем сомневаюсь)
Поддерживаю. Если работает - лучше не трогать. 8-)



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

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

Наверх





Память: 0.46 MB
Время: 0.038 c
3-1088182867
zokzok
2004-06-25 21:01
2004.07.18
ttable vs tquery


14-1088582593
GanibalLector
2004-06-30 12:03
2004.07.18
ДОСТУП ЗАБЛОКИРОВАН


1-1088693556
Agent[007]
2004-07-01 18:52
2004.07.18
Циклы...


6-1084979142
Ahven
2004-05-19 19:05
2004.07.18
WinSock: gethostbyaddr vs getnameinfo


14-1088693650
VID
2004-07-01 18:54
2004.07.18
Возникла необходимость реализовать автообновление программы через





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