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

Вниз

Помогите с растановкой приоритетов   Найти похожие ветки 

 
просто_человек   (2006-10-19 14:32) [0]

Здравствуйте.
при написании базы столкнулся со следующей проблемой. Есть база заказов предприятия, приходящие заказы становятся в очередь на выполнение, по умолчанию, ставлю заказ в конец очереди. У заказа есть Дата_Начала выполнения и Дата_Окончания, причем, Дата_Начала следующего заказа == Дата_Окончания предыдущего. При этом должна быть возможность изменения приоритета - т.е. если например заказ вместо,скажем, 12 изменяется по приоритету на 3, то соответственно все последующие заказы должны "съезжать" на один вниз, с изменением своего приоритета на +1 или соответствующим изменением Даты_Начала и Даты_Окончания.

Подскажите если не сложно как это реализовать.
Всем заранее спасибо


 
Sergey13 ©   (2006-10-19 14:45) [1]

Завести поле приоритета, по умолчанию = ID. При изменении оного менять это поле. Если ID - integer, можно сделать приоритет дробным числом и давать ему значения типа 345.5 345.55 и т.д. Сортировать ессно по нему.


 
просто_человек   (2006-10-19 15:31) [2]

А в какую процедуру загнать действия по изменению приоритета, чтобы она запускалась непосредственно при изменении в ячейке приоритета?


 
Sergey13 ©   (2006-10-19 15:33) [3]

> [2] просто_человек   (19.10.06 15:31)
Переведи. Помедленнее.


 
Johnmen ©   (2006-10-19 15:34) [4]

В процедуру AfterPost.


 
просто_человек   (2006-10-19 15:47) [5]

Хотелось бы иметь следующий порядок действий:
При измнении в таблице ячейки приоритета
1) Приоритет изменяемого заказа ставим любым и желательно нормальным, целым числом.
2) При этом все заказы,начиная с того, чей приоритет мы заняли, сдвигаются на один вниз
3) Дата_Начала и Дата_Окончания изменяются согласно условию Дата_Начала следующего заказа == Дата_Окончания предыдущего

Интересует как это сделать и в какой процедуре, чтобы при этом не вылезло ошибок типа Key Violation из-за того что мы пытаемся поставить уже существующий приоритет и т.д.

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


 
Sergey13 ©   (2006-10-19 15:49) [6]

> [2] просто_человек   (19.10.06 15:31)

Кажется въехал. А никакого действия при этом не надо (если я правильно въехал 8-), кроме как пересортировать НД, если этого не произойдет автоматически.


 
Johnmen ©   (2006-10-19 15:54) [7]


> Sergey13 ©   (19.10.06 15:49) [6]


Не въехал...:)
Ему придётся перелопатить все записи с приоритетом, находящимся между старым и новым значением приоритета.


 
просто_человек   (2006-10-19 15:55) [8]

всмысля?


 
просто_человек   (2006-10-19 15:56) [9]


> Ему придётся перелопатить все записи с приоритетом, находящимся
> между старым и новым значением приоритета.
>


Вот-вот)))
Только как это правильно сделать, чтоб ничо не глючило...


 
Sergey13 ©   (2006-10-19 16:04) [10]

> [9] просто_человек   (19.10.06 15:56)
> Вот-вот)))

Зачем?


 
sniknik ©   (2006-10-19 16:04) [11]

индекс по нему установить активным и все, никаких и "перелопачиваний"... (при непрямом доступе через ADO например, сделать локальный индекс/сортировку в результирующем рекордсете)


 
просто_человек   (2006-10-19 16:06) [12]

индекс стоит, по нему идет сортировка таблицы


 
Johnmen ©   (2006-10-19 16:09) [13]


> Sergey13 ©
> sniknik ©  


Мужики, вам пора телепаторы промывать :)))


 
Sergey13 ©   (2006-10-19 16:44) [14]

> [13] Johnmen ©   (19.10.06 16:09)

Спиртом? Я не против. 8-)


 
Johnmen ©   (2006-10-19 16:57) [15]


> Sergey13 ©   (19.10.06 16:44) [14]
> Спиртом? Я не против. 8-)


Кто ж откажется? :)


> просто_человек


Проходишь по набору данных в рассматриваемом диапазоне приоритетов в обратном порядке. Изменяемый забиваешь напр.как 99999999. Остальные "двигаешь".Потом изменяемому назначаешь желаемый. Ну и не забываешь при этом подправлять даты.
Всё просто...


 
Sergey13 ©   (2006-10-19 17:42) [16]

> [15] Johnmen ©   (19.10.06 16:57)
> Всё просто...
А зачем все это?
Есть данные
ИД  Приоритет Документ
1      1         1
2      2         2
3      3         3

Отсортировано по Приоритету. Захотели мы поднять приоритет 3 документа и сделать его 2 по списку. Ну и сделали

ИД  Приоритет Документ
1      1         1
3      1.5       3
2      2         2

Все. Что еще менять то?


 
Johnmen ©   (2006-10-19 17:44) [17]


> Sergey13 ©   (19.10.06 17:42) [16]
> Что еще менять то?


Даты.


 
Sergey13 ©   (2006-10-19 17:48) [18]

> [17] Johnmen ©   (19.10.06 17:44)

Зачем? Есть документ (заказ) принятый сегодня. Но я крутой и башляю немеряно, поэтому хочу, что бы мой заказ сделали "прям щас", а не после твоего, поданного вчера. Зачем даты то менять? Нужно же просто очередь изменить или я неправильно понимаю слово "приоритет"?


 
ANB ©   (2006-10-19 17:50) [19]


> Дата_Начала следующего заказа == Дата_Окончания предыдущего

Одну дату прибить. Вместо этого ввести продолжительность_исполнения. Тогда хватит одного апдейта. Наверное. :)


 
Sergey13 ©   (2006-10-19 17:59) [20]

> [19] ANB ©   (19.10.06 17:50)

Мне кажется что Дата_Начала следующего заказа и Дата_Окончания предыдущего присваиваются когда заказ начинает и заканчивает ИСПОЛНЯТЬСЯ. Т.е. когда он уже выбран на исполнение согласно приоритету и приоритет перестает действовать.


 
просто_человек   (2006-10-19 18:16) [21]


> Мне кажется что Дата_Начала следующего заказа и Дата_Окончания
> предыдущего присваиваются когда заказ начинает и заканчивает
> ИСПОЛНЯТЬСЯ. Т.е. когда он уже выбран на исполнение согласно
> приоритету и приоритет перестает действовать.
>

Нет,нет, даты назначаются заранее, время выполнения мы знаем, даты и приоритеты для того и идут чтобы, если заказ по плану не успевает выолнится всрок, то мы меняем его приоритети помещаем в начало очереди


 
ANB ©   (2006-10-19 18:41) [22]


> Sergey13 ©   (19.10.06 17:59) [20]

Судя по текущим условиям тута все одна дата нужна. И длительности каждого заказа. Даты начала и конца (планируемые) можно получить запросом. А исполненные и двигать незачем. Их можно хранить отдельно с заполненными фактическими датами.



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

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

Наверх




Память: 0.52 MB
Время: 0.035 c
15-1165588186
sergey888
2006-12-08 17:29
2006.12.31
Прослушка мобильных


8-1147447704
Mikhael
2006-05-12 19:28
2006.12.31
spechAPI 4.0 и kol


11-1142575284
Unknown Mystic
2006-03-17 09:01
2006.12.31
Ошибка в TKOLOpenDirDialog из MCK?


15-1165980287
vidiv
2006-12-13 06:24
2006.12.31
Персональный компьютер


6-1155098405
VitGun
2006-08-09 08:40
2006.12.31
Программное создание и настройка Dial-Up соединения