![]() |
|
Модераторы: Akina |
![]()
|
|
| Свят86 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 25.12.2008 Репутация: нет Всего: нет |
Здравствуйте.
появилась потребность организовать пересчет нумерации после удаления записи, столкнулся с двумя проблемами: 1. Как вызвать событие пересчета после удаления записи? (не критично можно вызвать по получению фокуса и т.д.) 2. Нумерация имеет текстовый вид и выглядит таким образом: 1 2 2.1 2.2 3 4 4.1 4.2.1 4.2.2 4.2.3 5 6 после удаления 3, должно получиться 1 2 2.1 2.2 3 3.1 3.2.1 3.2.2 3.2.3 4 5 после удаления 3.2.1 должно получиться 1 2 2.1 2.2 3 3.1 3.2.1 3.2.2 4 5 вот в таком духе... пока в мыслях вытаскивать из таблицы нумерацию, расчленять номер на составляющие и уже проверять правильный ли номер и менять его при необходимости. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Зависит от того, как именно удаляется запись. Триггеров в Аксессе нет. Застрелитесь. Или измените способ хранения данных. Или пишите свою функцию пересчёта. Hint - новый номер однозначно и очень просто определяется старым номером и номером удаляемой записи. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Пересчитывать "руками" и в функции удаления. В принцепе ничего сложного!
|
|||
|
||||
| Свят86 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 25.12.2008 Репутация: нет Всего: нет |
чет я не нашел вызова на удаление записи (2010 access) , но да ладно.
Akina, к сожалению структуру менять нельзя... а вариант застрелиться нужно рассмотреть поподробнее! пока мысли такие: сделать трехмерный массив, в который загнать номера в итоге получиться: 100 200 210 220 300 400 410 421 422 423 500 600 вот сижу и думаю как сделать проверку на удаление и перерасчет... |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Хреново... Повторю:
Составьте чёткое правило - что и как пересчитывается. Оно настолько простое, что даже подсказывать не буду. А когда будет правило - напишите функцию в модуле и используйте её в запросе на обновление после выполнения удаления. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| Свят86 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 25.12.2008 Репутация: нет Всего: нет |
походу я туплю но что за Hint? поиск в справке результата не дал, на форуме как-то тоже... можно поподробнее или ссылку?
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Hint (англ.) - намек, подсказка, совет.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Свят86 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 25.12.2008 Репутация: нет Всего: нет |
в общем решил не трехмерным массивом сделать а тремя одномерными чтоб проще было соображать. разбивку на составляющие сделал, проверку на порядок нумерации тоже, но есть косяк и вот уже час сижу не могу догнать как его убрать... вот код:
где a,b,c - массивы содержимого колонок. косяк получается в такой ситуации 1 2 2.1 2.2 2.2.1 2.3 2.4 2.4.1 2.4.2 3 4 после удаления 2.3 получается 1 2 2.1 2.2 2.2.1 2.3 2.4.1 тут должно быть 2.3.1 2.4.2 2.3.2 3 4 все остальные удаления которые проверял отрабатываются нормально. |
|||
|
||||
| Свят86 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 25.12.2008 Репутация: нет Всего: нет |
в общем пока нашел такое решение, вроде все работает:
|
|||
|
||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |