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

Вниз

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

 
AccessLamer   (2002-11-06 11:49) [0]

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

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

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

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


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

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


 
Romkin   (2002-11-06 11:55) [2]

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


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

2 Alexandr © (06.11.02 11:50)

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


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





 
Alexandr   (2002-11-06 11:59) [4]

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


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

2 Romkin © (06.11.02 11:55)

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

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

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



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

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


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

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


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

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

1.SELECT MAX(ID) FROM..

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

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

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

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

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


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

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


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

2 Jeer © (06.11.02 12:43)

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


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

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

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



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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
3-82606
Fishka
2002-11-01 16:15
2002.11.25
Table(s) open. Cannot perform this operation. - Почему?


1-82748
iNew
2002-11-15 09:13
2002.11.25
Качаю файл по протоколу Zmodem, используя компоненту Async32


1-82842
mvg_first
2002-11-13 20:22
2002.11.25
Помогите создать TDataSetProvider в рантайме


1-82791
Sergey-ZZZ
2002-11-13 09:14
2002.11.25
RichEdit


3-82676
=SOFT=
2002-11-06 18:40
2002.11.25
interbase 6 - Помогите пожалуйста !!!!!





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