Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в таблице [D6, Access]


JB ©   (2004-06-18 08:35:00) 

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


Sergey13   (2004-06-18 11:44:00) [1]

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

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


sniknik   (2004-06-18 11:34:00) [2]

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

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


Sergey13   (2004-06-18 10:52:00) [3]

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


sniknik   (2004-06-18 10:39:00) [4]

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

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


Sergey13   (2004-06-18 09:19:00) [5]

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо