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

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

Вычисление ключа [D5, D6, D7, Access, MS Jet 4]


Atanas ©   (2004-02-25 11:32:00) 

Доброго времени суток Всем,

Ситуация следующая: Есть таблица населенных пунктов (Settlements)
в нем ключевое поле - SID, код области - SRegion, и т.д.
Как сделать так, чтобы при заполнении записи пользователем SID - генерировался программно по следующему правилу:Первая цифра это код области, а три остальные просто автоинкремент.
Как это можно сделать?


Anatoly Podgoretsky   (2004-02-25 13:26:00) [1]

Atanas   (25.02.04 13:22) [18]

А вот в Atanas   (25.02.04 12:58) [15] это и есть репликация данных.


Atanas   (2004-02-25 13:22:00) [2]

To: Johnman
Не было речи про репликацию. Простое объединение данных репликацией не называется.


Sandman25+1   (2004-02-25 13:03:00) [3]

[15] Atanas   (25.02.04 12:58)

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


Johnmen   (2004-02-25 13:02:00) [4]

>Atanas   (25.02.04 12:58) [15]

Вот наконец-то выясняется, что нужна репликация. Сразу сказать было сложно ?

В этом случае будет один уникальный ключ по указанным двум полям.


Atanas   (2004-02-25 12:58:00) [5]

To: Johnmen

Классно. Резюме:
Если в каждой области будет заполняться такая таблица то при их объединении об уникальности такого уникального ключа можно забыть?


Johnmen   (2004-02-25 12:55:00) [6]

Можно, но не нужно, т.к. это ещё один путь к гиморою в многопользовательской системе...


Sandman25+1   (2004-02-25 12:55:00) [7]

[12] Atanas   (25.02.04 12:53)

При многопользовательской работе будут проблемы, и большие.


Atanas   (2004-02-25 12:53:00) [8]

Можно же получать новый код из предыдущего. Например запрос на нахождение максимального SID для нужного региона. Находим и увеличиваем на единицу.
Из всего того что было сказано ранее я не могу найти как реализовать функцию поиска по подмножеству типа: DMAX, DMIN, DLOOKUP... и т.д. в Delphi + ADO
Буду очень благодарен за информацию


Johnmen   (2004-02-25 12:49:00) [9]

Уже ответили. Резюме:
1. Есть уникальный идентификатор населенного пункта - автоинк. поле, первичный ключ.
2. Есть неуникальный идентификатор области для нас.п. - ссылочный ключ.

Другие варианты по большей степени сплошное извращение и гиморой себе на голо... тьфу ! на задницу...
:)


Sandman25+1   (2004-02-25 12:45:00) [10]

[9] Atanas   (25.02.04 12:42)

Прошу прощения за форму моего сообщения.
Но еще раз обращаю Ваше внимание на тем не менее верную суть того же сообщения. Не той тропинкой идете. Придется использовать генератор или какой-то еще источник уникальных чисел, например, таблица с 1 полем и 1 записью, которая локируется, поле инкрементируется, считывается и таблица освобождается.


Atanas   (2004-02-25 12:42:00) [11]

To: Sandman25+1 -
1. Это не очень то и вежливо с вашей стороны.
2. Я просил помощи, а получил философские размышления о том как все вы круты
3. Неужели это так сложно ответить?


Anatoly Podgoretsky   (2004-02-25 12:15:00) [12]

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


Sandman25+1   (2004-02-25 11:59:00) [13]

[6] Atanas   (25.02.04 11:52)

Ага, а потом понадобится сделать фильтр по региону, и Вы будете спрашивать, как получить первую цифру числа? :)
Делайте 2 поля и не морочьте себе и другим людям голову :)


Atanas   (2004-02-25 11:52:00) [14]

To Кщд - Там где будет использоваться программа областей на страну всего 7 из них филиалы конторы только в 4. ;-)


Atanas   (2004-02-25 11:50:00) [15]

Объем да и скорость... Ну не суть в Access это сделать доволно таки легко. В событие до обновления прописываешь типа:
SID=SRegion+DMAX("SID","Settlements","SID


Кщд   (2004-02-25 11:46:00) [16]

очень даже рационально, коли есть нужда в выборке статистики по каждой области отдельно.

"Первая цифра это код области" - прямо-таки цифра? :)


Соловьев   (2004-02-25 11:45:00) [17]

в чем не рациональность? в трате дискового пространства?


Atanas   (2004-02-25 11:41:00) [18]

Это не рационально - каждая таблица использующая эту как справочник должна будет тоже иметь 2 поля ключа вместо одного.


Соловьев   (2004-02-25 11:35:00) [19]

а почему обязательно одно поле? два сделай


Наверх

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