powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Смена приоритета...
23 сообщений из 23, страница 1 из 1
Смена приоритета...
    #32271466
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давненько не заглядывал... Всем приветы!!!

Вопрос следующий... Есть таблица "Отдел". В ней два поля: Num_otd и Name_otd. Как считаете, как проще реализовать на форме, отображающей список существующих отделов, смену приоритетов. Т.е. поменять нумерацию отделов. К примеру существует 5 отделов со своим порядковым расположением. При создании нового отдела его порядковый номер должен быть, к примеру, третьим. То бишь вставить его в середину и сместить остальные (по нумерации) ниже... Чтение записей из существующей таблицы, далее, её удаление и создание новой с новым порядком не подходит. Можно принудительно менять каждому отделу номер при отображении на форме, но отделов может быть очень много, да и ошибки возможны... Поэтому хотелось бы чтобы выбрав необходимую цифру для нового отдела остальная нумерация (та что ниже) автоматически смещалась на единицу. Что посоветуете? Спасибо заранее...
...
Рейтинг: 0 / 0
Смена приоритета...
    #32271508
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде так:
1. запомнить строку с изменением
Если номер уменьшается
2а. увеличить на единицу все номера >= нового и < старого номера.
если номер увеличивается
2б. уменьшить на единицы все номера > старого и <= нового номера.
3. Присвоить новый номер запомненой строке.
...
Рейтинг: 0 / 0
Смена приоритета...
    #32271529
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо нужно поле - рейтинг.
Код отдела не трогать вообще.
Во всех списках при выборе сортировка по полю рейтинг.
...
Рейтинг: 0 / 0
Смена приоритета...
    #32271609
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 incold:
Естественно, об том и речь. Но ентот рейтинг иногда приходится менять, когда вводишь новый отдел. А уж сортировать по нему - это также естественно, что можно было и не говорить... Вопрос именно в том, как реализовать смену порядка чисел в определённом поле.

2 sasha_1:
Спасибо за мысли. Так вот как лучше оценивать данные этого поля - циклом по записям и менять в рекордсете или можно как то попроще?
...
Рейтинг: 0 / 0
Смена приоритета...
    #32271621
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а не лучше ли сделать несколько полей для целей сортировки ?

1 подразделения по филиалу, департаменту.
2 подразделения по департаменту, филиалу.
3 итд

и выбирать неапосредственно один из фиксированных порядков ?
...
Рейтинг: 0 / 0
Смена приоритета...
    #32271624
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я увидел такой текст:
Есть таблица "Отдел". В ней два поля: Num_otd и Name_otd

Поле рейтинг не видно

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

По поводу интерфейса.

Я бы сделал что-то вроде такой формочки, которая вызывается при выборе ссылки для проекта

VBA: Tools -> Reference

Т.е. две кнопочки поднять рейтинг, опустить (кого опустить?! ) рейтинг.
Кнопка работает для текущей записи.
Поле рейтинг сделать скрытым и изменять его только программно.
Алгоритм работы кнопочек может быть любой (в т.ч. предложенный sasha_1)
...
Рейтинг: 0 / 0
Смена приоритета...
    #32271844
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за советы...

2 АлексейК & incold:
Думаю, что заворачивать такие весчи для этой процедуры нет смысла. Задача проще, чем кажется. Всего то нужно при вводе нового отдела определить для него, в какой позиции в списке отделов он будет стоять. Дальше - всё, никаких перестановок не требуется. А затем при выводе инфы, относящейся к тому или иному отделу, она (инфа) будет располагаться именно по релевантности этих подразделений. Так всё же мож подсоветуете как лучше организовать считывание и сравнение нового значения рейтинга со старыми и соответственно их последующая замена. Я так вижу решение только с помощью циклов... Типа


Код: plaintext
1.
2.
3.
for i= 1  to DMax(Num_otd)
if rst!num_otd >= i .................
...........................................
и т.д.
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274087
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...бьюся, бьюся... ну не получается у меня с рекордсетами...


Токма не ругаться! Подскажите, плиз, как считывать значения одного из полей для каждой записи в рекордсете? Я сравниваю значение определенного поля на форме со значениями поля для каждой записи в таблице. Затем при определенных раскладах меняю некоторые из них (в таблице) на +1. Как добиться смены значения в поле конкретной записи? С уважением...
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274314
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
set rs=currentdb.openrecordset(...)
while not rs.eof
rs.edit
rs![field]=NewVal
rs.update
rs.movenext
wend
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274333
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант который я предлагал более простой и более универсальный

Но раз уж так хочется, то sasha_1 уже сказал правильное решение.

Пример:
Хочу добавить новый отдел с рейтингом 5

update [отделы] set [рейтинг]=[рейтинг]+1 where [рейтинг]>=5
Добавление записи с рейтингом 5 (любым способом)
Обновление данных на форме
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274349
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если рейтинг изменяется только у нового отдела, то сделай как говорит
incold и не парься.
мои излияния относятся к ситуации когда меняется рейтинг у уже
существующего отдела.
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274391
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот спасибо, за отзывчивость...
Давайте условимся: это не рейтинг, а просто порядковый номер в списке отделов, или приоритет. И при вводе нового отдела, значения приоритетов некоторых отделов так или иначе изменится, если , конечно ему (новому) не поставят самый низкий приоритет.

2 sasha1: В твоем варианте идет перебор всех записей, начиная с первой. А нужно апдейт делать только для тех, что ниже вновь введенной.

2 incold: Думаю этот вариант самый простой и приемлемый. Спасибочки...
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274407
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 G&P
У тебя код (порядковый номер) отдела ключ или нет?
Если да то см. мое первое сообщение.
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274455
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, конечно не ключ. Просто отдельное поле... Всё получилось, спасибо...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Num_otd_AfterUpdate()
If Num_otd.Value <= (DMax( "Num_otd" ,  "Otdel" ) +  1 ) Then
DoCmd.OpenQuery  "UpNumOtdel" , acViewNormal
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Otdel.Requery
Name_otd.SetFocus
DoCmd.GoToRecord , , acNewRec
Else
MsgBox  "Номер нового отдела слишком высок. Превышает общее количество отделов." 
Num_otd.Value = Null
End If
End Sub
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274479
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я бы сделал поле этого рейтинга флоутом... и изначально раздавал бы с большими дырами.

и действительно не парился бы
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274489
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 G&P
Все это конечно хорошо, но рано или поздно возникнет потребность поменять приоритет двух отделов.
Например, за плохую/хорошую работу опустить/поднять приоритет отдела автоматизации
И придется делать новую процедуру.
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274492
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда милости просим в мой алгоритм.
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274527
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Над чем щас и парюсь...

Сначала хотел просто менять приоритет при вводе нового отдела. А теперь нужно еще и менять расположение отделов, совсем как incold сказал... Короче пытаюсь расположить на форме контрол-счетчик, и считываю текущую запись из подчиненной формы. При событии SpinUp счетчика или SpinDown соответственно меняю приоритеты всех записей по отношению к новому приоритету... Короче, гемор продолжается...
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274537
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В-о-о-т, а я говорил
Не знаю у кого как а я придерживаюсь стандартного для продуктов мелкософт интерфейса. Внешний вид (уже упоминалось) похоже при добавлении новой ссылки в VBA.

Новая запись всегда добавляется с самым низким рейтингом.
На форме есть две кнопочки вверх и вниз
После добавления новой записи фокус на запись и жми кнопку вверх пока не достигнешь нужного уровня.
Выгода в том, что изменяются только две записи:
- при движении вверх текущая и верхняя
- при движении вниз текущая и нижняя
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274570
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 incold:

Вообщем я так и сделал, только вот никак не могу понять где ошибка. Вроде бы всё правильно... Алгоритм следующий:
- создал две кнопки (вниз, вверх);
- при нажатии на "вверх" сначала ищу запись на единицу большую, чем у текущей;
- меняю её номер на 1 меньше;
- затем прибавляю 1-цу к номеру текущей записи;
- рекуери формы;
- делаю текущей запись с которой всё начиналось...

Так вот у текущей записи номер меняется, а у соседней, которой положено меняться - нет... Проверю запрос на обновление...
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274618
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний вопрос и я от вас отстану...

Как осуществить переход из основной формы на определенную запись подчиненной? Дело в том что после обновления подчиненной, текущей становится первая запись. А нужно чтобы фокус был на той, что была до обновления...
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274622
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Смена приоритета...
    #32274655
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, incold!!! И еже с ним!У меня всё получилось!!!
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Смена приоритета...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]