Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.12;
Скачать: CL | DM;

Вниз

Число   Найти похожие ветки 

 
Ag2002   (2002-07-19 18:15) [0]

Подскажите, есть поле в БД числовое, оно пользователю для ввода не доступно, но мне нужно чтобы в это поле вводились, произвольные значения, которые НЕМОГУТ повторятся, т.к. будут активно использоватся, в другой таблице, как это сделать, подойдет ли random ?


 
Val ©   (2002-07-19 18:33) [1]

>подойдет ли random ?
конечно нет, поскольку это генератор псевдослучайных чисел и вполне нормальна ситуация когда он выдаст несколько повторяющихся значений.
Для этих целей можно использовать (при работе с бд только одного пользователя) квери с запросом select max(id)+1 from mytable, возвращаемое им значение и вставлять в новую запись.
Можно также сделать у этого поля тип автоинкремент, но проблема в том что он нестабилен в парадоксе.


 
Ag2002   (2002-07-19 18:42) [2]

Автоинкримент былбы хорош если бы записи не удалялись, добавлять номер количества записей + 1, не подходит, из-за проблем удаления !!!
Нужен какой нибудь код, по генерации произвольно большого числа, но который очень быстро выполняется !!!


 
sniknik ©   (2002-07-19 18:48) [3]

CreateGUID ? уникальность гарантируется.


 
Val ©   (2002-07-19 18:55) [4]

я предлагал вам не добавлять номер количества записей + 1, а максимальный ID+1 - разницу чувствуете??? или это конец рабочего дня так действует? ;)


 
kaif ©   (2002-07-20 01:11) [5]

Можно собрать из текущей дата-времени нечто... типа
StrToInt64(FormatDateTime("YYMMDDHHNNSS",Now)), если Paradox умеет с int64 работать...


 
Ag2002   (2002-07-22 10:11) [6]

Я тут свою идею всётаки реализовал, перед добавлением записи, смещатся к последней читать значение в этом поле и прибовлять 1, ни каких повторений :)))


 
Johnmen ©   (2002-07-22 10:26) [7]

>Ag2002 (22.07.02 10:11)

Ха. А это и есть вариант Val ©, только через задницу.


 
Ag2002   (2002-07-22 15:29) [8]

ЗАто работает,
Везде есть свои недостатки,
А в нашей стране всё так делается, через ... !!!



 
MsGuns ©   (2002-07-22 15:45) [9]

>Ag2002
А если запись вставиться в середину табла ?


 
Val ©   (2002-07-22 15:58) [10]

>Ag2002 (22.07.02 15:29)
аргументы потрясающие


 
Ag2002   (2002-07-22 17:40) [11]

> MsGuns ©
Проверь всё пашет, ведь берётся значение поля которое стоит последним, а там всегда самое большое значение !!!


 
MsGuns ©   (2002-07-22 18:18) [12]

>Ag2002
OfCouse !
4 записи (только ключи)

10
20 <-- Здеся юзверь нажает Insert
30
40

Прога определяет значение 50, ессно. Но тогда новая запись будет ПОСЛЕДНЕЙ ! А ему надо, чтоб она была после 10, но до 20 !
Вот, собственно, и все !!!


 
Val ©   (2002-07-22 18:30) [13]

>MsGuns © (22.07.02 18:18)
думаю вы немного не о том говорите, поскольку автору нужен уникальный ID(pk) вот и все, а как он отобразит эти записи для пользователя, он решает с помощью построения индексов, конечно же, но почему вы думаете, что обязательно по ID? pk обычно даже не отображают, его осн. применение - обеспечение уникальности записи в НД. А физически запись добавляется в конец НД.


 
MsGuns ©   (2002-07-22 18:41) [14]

> Val
>думаю вы немного не о том говорите, поскольку автору нужен >уникальный ID(pk) вот и все, а как он отобразит эти записи для >пользователя, он решает с помощью построения индексов,

Если вопрос ставится именно так, то, безусловно, вы все правы !
Но, к сожалению, это не всегда приемлимо для юзера (например, бухгалтера хотят видеть проводки в том порядке, в каком они их ВВОДИЛИ !)


 
Val ©   (2002-07-22 18:48) [15]

дело в том что ID(pk) не должен касаться юзера, он о нем и не знает вовсе. Это информация для разработчика. А для бухгалтеров существуют номера документов(часто уникальный индекс), даты ввода и т.д., с которыми они и работают.


 
MsGuns ©   (2002-07-22 18:54) [16]

>Val
Не хочу казаться скучным, но НОМЕР ПРОВОДКИ и НОМЕР ДОКУМЕНТА это совсем не одно и то же. Есть проводки БЕЗ документов, а есть документы с кучей проводок. А номер, действительно, показывать не надо - и вот из-за этого-то вся проблема ! (Если б он вводился/ редактировался юзером, никаких траблов бы не было !) Лови себе выталкивание ключей и верещи мессагой !


 
Val ©   (2002-07-22 18:59) [17]

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


 
Anatoly Podgoretsky ©   (2002-07-22 19:27) [18]

Ag2002 (19.07.02 18:42)
А чем прерятствует удаления уникальности автоинкриментного поля, откуда такое дикое предположение


 
Anatoly Podgoretsky ©   (2002-07-22 19:29) [19]

Random конечно тоже можно использовать, проверяя уникальность в цикле, но вот тут уже в полной мере становится проблема удаления


 
CA   (2002-07-22 23:02) [20]

> Anatoly Podgoretsky
если удалять запись и добовлять просто новую то значение ключа повторяеется


 
Anatoly Podgoretsky ©   (2002-07-22 23:24) [21]

CA (22.07.02 23:02)
Ты это сам решил ил на основании каких нибудь научных данных?


 
Ag2002   (2002-07-23 14:02) [22]

Anatoly Podgoretsky
Са наверно имел в виду если в запись вставлять значение количества записей в БД



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

Текущий архив: 2002.08.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.027 c
4-35515
skiph
2002-06-06 05:39
2002.08.12
C и Delphi


1-35372
@andrew
2002-07-29 12:25
2002.08.12
Привет Всем!


4-35491
Serd_hhc
2002-06-02 16:24
2002.08.12
Невидимый процесс.


14-35418
esprit_bel
2002-06-06 11:27
2002.08.12
Исходник


1-35334
Nikolai_S
2002-07-29 13:40
2002.08.12
Как поместить в DLL форму MDI Child?