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

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

Хочу аналог интербейсовского генератора в аксесе...


AccessLamer ©   (2002-11-06 11:49:00) 

Возможен ли сабж?

Зы. Автоинкрементное поле не катит, так как id нужно уникальным для базы, а не для отдельной таблички.

Да, работать с базой буду через ADO.

Зы2. Сорри за возможно ламерский вопрос, я акссесс только три дня назад увидел, раньше как только мог, обходил стороной.. Не судьба видно..


Jeer   (2002-11-06 12:57:00) [1]

>так как id нужно уникальным для базы

Этот прием работает как для каждой таблицы, так и для выделенной таблицы, где будет уникальным уже для базы


Ihor Osov'yak   (2002-11-06 12:52:00) [2]

2 Jeer © (06.11.02 12:43)

Наверно так придется и делать. Но пермишн уж очень пострадает. :-(


Jeer   (2002-11-06 12:46:00) [3]

Кому покажется это странным - вспомните, что доступ в сеть Ethernet вообще построен на коллизиях (соревновании в доступе и конфликтах).
Такие системы как правило более устойчивы, т.к. в них заложен стохастический принцип работы, а не детерминированный.


Jeer   (2002-11-06 12:43:00) [4]

Можно использовать след прием - работает..

1.SELECT MAX(ID) FROM..

2.idm := field[0].AsInteger + 1;
Т.о. на клиента имеешь предполагаемый max id

3.Затем добавляешь запись с данным idm и на исключении повторяешь ограниченное число раз до успеха или отказа.

Если отказ - значит кто-то успел раньше вставить данный idm
поэтому повторяешь с 1 по 3 опять же зданное число раз.

Оповещаешь пользователя при полном отказе.
Число вн и внеш. повторений определяется сеткой, СУБД, числом пользователей.
Обычно 5-6 для внеш. и 2-3 для внутр.

Все это обрамляется транзакцией, если поддерживается.
Проблем за несколько лет использования такого приема не замечено.
Применять там где мешается инкремент и нет других способов генерации уникальных id.
Шутки ради было откатано и на IB - без проблем.


Romkin   (2002-11-06 12:13:00) [5]

Ну то, что несколько клиентов - какая разница??? GUID уникальные будут, хоть как извращайся
Нормальных ресурсов для Акксесса нет по определению, ИМХО :-))
Попробуй форумы (по MSSQL) на www.sql.ru www.relib.com
А вот монотонно возрастающий - явно табличка в БД, с блокировкой доступа (как на аксесс блокировать - понятия не имею)
или для бекапа запоминать использованные GUID в отдельной таблице


sniknik   (2002-11-06 12:12:00) [6]

Только через отдельную таблицу с автоинкрементом возможно (по моему), в общем придется изгалятся.


Ihor Osov'yak   (2002-11-06 12:01:00) [7]

2 Romkin © (06.11.02 11:55)

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

Во вторых, генерация на стороне клиента не идет, так как не исключено, что работать будут несколько клиентов одновременно.

Да, и где в инете есть нормальный ресурс по акксесу, типа этого по делфи (желательно рускоговорящий)?


Alexandr   (2002-11-06 11:59:00) [8]

бедный? С аццесс?


Ihor Osov'yak   (2002-11-06 11:57:00) [9]

2 Alexandr © (06.11.02 11:50)

Рад бы, но заказчих хочет многоплатформенную поддержку дб, втч аксесс. Типа бедный или не очень продвинутый работает с аксеес, а нормальный - юзает другой движок


ЗІ. Сорри за маскировку под псевдо, все же немного стыдно немного ламерские вопросы задавать..




Romkin   (2002-11-06 11:55:00) [10]

А ты GUID генери и вставляй, в MSSQL так и делают :-))
uuidCreate, CoCreateGUID... 16 байт


Alexandr   (2002-11-06 11:50:00) [11]

забудь про Аццесс


Наверх

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