Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2012, 14:36   #1
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию скользящая нумерация

как сделать скользящую нумерацию внутри каждого пользователя и даты (как добавить поле № Документа)?



Код:
SELECT ID_USER, DATEDST, IDENTITY(INT,1,1) NUMBER_DOC
INTO #tmp
FROM NOTE
WHERE DATEDST=NOW ( как здесь указать уникальность каждого пользователя?)

SELECT * FROM #tmp ORDER BY ID_USER

Последний раз редактировалось kate158; 15.02.2012 в 15:08.
kate158 вне форума Ответить с цитированием
Старый 15.02.2012, 15:19   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

identyty для NUMBER_DOC не получится однозначно. Делайте ключевое поле отдельное, если оно нужно. Здесь кстати можно использовать составной уникальный ключ из двух полей ID_USER и NUMBER_DOC. Но забота о содержимом этих полей в любом случае ложится на плечи программиста
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.02.2012, 15:24   #3
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

нельзя сделать составной ключ из двух полей. один пользователь за один день может добавить несколько документов.
kate158 вне форума Ответить с цитированием
Старый 15.02.2012, 15:26   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

И программа должна позаботиться при этом, чтобы в рамках одного пользователя номер документа был уникален
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.02.2012, 15:29   #5
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

блин! кажется я спросила об этом в первом посте!
kate158 вне форума Ответить с цитированием
Старый 15.02.2012, 15:36   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если средствами SQL, то в триггере на вставку определить максимальный номер существующих документов конкретного пользователя и присвоить во вставляемой записи номер на 1 больше. Если программно, то тоже самое, только средствами DELPHI.

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

Последний раз редактировалось Аватар; 15.02.2012 в 15:41.
Аватар вне форума Ответить с цитированием
Старый 15.02.2012, 17:07   #7
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

возьмите вместо id документа uuid уникальность гарантируется
или добавляете id документа из генератора на уровне СУБД
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 16.02.2012, 01:36   #8
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Прием то достаточно известный:
Код:
SELECT ID_USER, DATEDST, ROW_NUMBER() OVER(PARTITION BY ID_USER, DATEDST ORDER BY ID_USER) as NUMBER_DOC
FROM NOTE
order by ID_USER, DATEDST

Последний раз редактировалось Прик; 16.02.2012 в 02:33. Причина: Ага, там еще по дате надо делить. Тогда так подправим...
Прик вне форума Ответить с цитированием
Старый 16.02.2012, 08:21   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
OVER(PARTITION
Угу. известный, только Кейт не указала СУБД
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.02.2012, 08:33   #10
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Да уж, вечная история: мало кто сразу говорит об используемой СУБД.
Отвечающие догадывайтесь.
В правила форума хорошо бы пунктик такой вписать чтоб авторы упоминали о том в своих темах.

Здесь же, говорит о СУБД функция IDENTITY. В других не встречалась (но может и есть...).
Прик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скользящая нумерация kate158 Общие вопросы Delphi 4 30.01.2012 13:30
Нумерация пользователей Rimays PHP 3 08.10.2011 21:51
Нумерация кругов Lifefine Общие вопросы Delphi 13 05.02.2011 22:36
Нумерация строк ShnapS БД в Delphi 5 06.05.2009 20:59
Нумерация BВВ Microsoft Office Word 1 23.10.2008 05:07