|
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
|
||||||
Как в поле ДатаНачалаПункта получить значение поля ДатаОкончанияПункта но из предыдущей запаси16.11.2017, 09:05. Показов 1877. Ответов 20
Метки нет (Все метки)
Доброго дня форумчане! Прошу помочь вот стакой задачей, как в поле ДатаНачалаПункта получить значение поля ДатаОкончанияПункта но из предыдущей запаси, если стоит флажок у даты.
Пробовал соорудить код, но он почему-то не хочет работать (пишет, что мало настроек). - взял из этого поста: Как в поле [Ost2] получить значение поля [Ost1] но из предыдущей строки
Базу приложил. (Формат Access 2010). Пользователь "Администратор" - там настроены поля с флажком и кнопка Пароль для входа: 123456 Буду очень признателен за помощь в реализации данной задумки.
0
|
||||||
| 16.11.2017, 09:05 | |
|
Ответы с готовыми решениями:
20
|
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
||||||||||||
| 16.11.2017, 09:27 | ||||||||||||
Добавлено через 4 минуты Это для начала. Хотя там и дальше не совсем понятно по этому коду... Исправил (как понимал) описанную выше ошибку - на следующей же строке теперь вылазит ошибка Overflow... Добавлено через 1 минуту Анализируя дальше ваш код, видим, что вы создаете переменную OST2 с типом данных Integer, и потом пытаетесь присвоить ей значение даты... Добавлено через 1 минуту В общем, попробуйте вот такой код функции. Не знаю, как он работает, но по крайней мере не выдает ошибок))
1
|
||||||||||||
|
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
|
|||||||
| 16.11.2017, 11:44 [ТС] | |||||||
|
Да код теперь без ошибок работает, но меняет не то что нужно. Теперь пробую прикрутить флажок к функции. Хочу, чтобы менялись только те записи которые выбраны. И пересчитывал по порядку. Дата окончания первой выделенной записи должна быть датой начала следующей выделенной записи и т.д.. Ниже код
0
|
|||||||
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 16.11.2017, 12:58 | |
|
Мне кажется, вы не туда вставили проверку флажка...
По идее, если вам нужно учесть положение КАЖДОГО флажка, то нужно его проверку вставлять внутрь цикла Do Until. А то получается, что вы ОДИН РАЗ проверили положение флажка - и от этой проверки зависит потом обработка ВСЕХ записей рекордсета. Добавлено через 2 минуты Кстати, только сейчас вот подумал. Смотрите, вы выбираете рекордсет, который сортируется по полю ДатаНачалаПункта, так? А потом в цикле вы ведь МЕНЯЕТЕ эти самые ДатыНачалаПункта... Как в этом случае сработает сортировка - вопрос очень интересный... Мне кажется, будет бардак. Возможно, рекордсет нужно сортировать не по этому полю, а например по полю счетчика?
1
|
|
|
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
|
|||||||
| 16.11.2017, 15:24 [ТС] | |||||||
|
Сделал другой код, точнее по заимствовал и изменил под себя из поста: Рабочие дни из таблицы календаря Автор: mobile Код:
Если все флажки снять, то Access зависает и вылетает. Люди добрые помогите пожалуйста!!! Уже мозги пухнут... БД приложил...
0
|
|||||||
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 16.11.2017, 15:36 | |
|
Не, давайте вернемся к прошлому варианту кода пока что)
Вот я сидел над ним и думал. И что придумал: у вас же в рекордсет отбираются ВСЕ строки из таблицы "ПунктыГрафика", так же? У вас их в таблице - больше 20 штук, так? А вот в подчиненную форму отбираются только строки, связанные с конкретным мероприятием, на котором сейчас стоит курсор в другой подчиненной форме. Вот и получается, что код работает, проходится по ВСЕМ записям из таблицы ПунктыГрафика, и обрабатывает их ВСЕ ПОДРЯД - оттого и получаются бог знает какие даты в итоге... Добавлено через 2 минуты Соответственно, нужно ОРГАНИЧИТЬ выборку рекордсета, чтобы в него попадали только пункты, связанные с конкретным мероприятием.
1
|
|
|
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
|
||||
| 16.11.2017, 15:50 [ТС] | ||||
|
И все это действие с кодом, нужно лишь для того, чтобы если пользователь ошибся, можно было это дело пересчитать, т.к. все эти пункты идут по порядку (один закончился, следом начинается следующий - ну как MS Project) А за Ваши советы, Вам огромное спасибо!!! Хоть кто-то откликнулся)))
0
|
||||
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 16.11.2017, 15:56 | |
|
Просто я сейчас анализирую именно прошлый вариант кода... Хотя в принципе, какая разница, если основная причина нестыковок, как мне кажется - именно в порядке сортировки рекордсета перед обработкой...
Смотрите, у вас в таблице ПунктыГрафика есть пункты, которые касаются Мероприятия 2.1. Их три штуки, и нумерация у них идет 2.1.0, 2.1.1 и 2.1.2. А вот в таблицу они занесены не в таком порядке, то есть под кодом счетчика 7 идет 2.1.1, под кодом 8 - 2.1.2, под кодом 43 - пункт 2.1.0 (первоначальный). В принципе, я переделал код с учетом всех органичений рекордсета и т.д., но сейчас я в коде использую сортировку по коду счетчика, а она-то как раз и не подходит, учитывая такой вот порядок ввода пользователями... Хм, а если поставить сортировку по полю нумерации - интересно, как VBA воспримет такую сортировку?.. Сейчас проверим.
1
|
|
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 16.11.2017, 15:59 | |
|
Кстати да, вариант работает. Задал сортировку по полю нумерации пунктов мероприятия).
Проверьте, мне кажется, так работает как нужно.
1
|
|
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
||||||||||||
| 16.11.2017, 16:14 | ||||||||||||
|
Добавлено через 7 минут кстати, у mobile код - как всегда шикарный и красивый, сейчас вот любуюсь) И если вам нужно, чтобы оно заработало, то, опять же, нужно убрать вообще проверку на флажки (и сами флажки из формы и из таблицы - по ходу, они не нужны), и просто в строке
Таким образом вы уже ограничите рекордсет только теми записями, у которых - нужный код мероприятия. Добавлено через 3 минуты И да, все время забываю написать, что вы проверяете не тот флажок). Нужно проверять не флажок на самой форме (насколько я знаю, в случае с ленточной формой флажок как элемент управления - "один на всех"), а нужно проверять значение поля "Пересчет" в выбранном рекордсете. Но это уже так, замечание после сказанного, поскольку, мне кажется, флажки там вообще уже не нужны.
1
|
||||||||||||
|
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
|
||
| 16.11.2017, 16:20 [ТС] | ||
|
Например: Первые три пункта идут последовательно, 4 и 5 пункты со своим временным ограничением, а 6 допустим с другой датой. Поэтому и нужно сделать так, чтобы пользователь, если ошибся при внесении пунктов, просто выделив их флажками взял, и пересчитал даты, и все стало на свои места.
0
|
||
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 16.11.2017, 16:25 | |
|
хм... Сейчас, почти сделал вам второй вариант, по предложенному коду.
1
|
|
|
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
|
||
| 16.11.2017, 16:31 [ТС] | ||
|
Да и первый вариант меняет именно те пункты, которые выделены галочками!!!!))) Круто!!!!
0
|
||
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 16.11.2017, 16:33 | |
Сообщение было отмечено ershov_pavel как решение
Решение
Вот, проверьте.
Только я сначала по привычке полез править код в Модуле 2, а потом уже открыл форму и увидел ваши усовершенствования). Так что в коде, который в модуле 2, я нахимичил, можете его удалить сразу. Да, и потом, я сначала таки убрал с формы галочки и делал код с расчетом без них. Потом прочитал ваше мнение - и вернул их на форму и их проверку в код. Еще добавил команду обновления подчиненной формы, чтобы было видно, как обновляются поля. И мне кажется, лучше просто добавить поле со "стартовой" датой добавить непосредственно на основную форму, рядом с кнопкой "Пересчитать даты", чтобы не вызывать еще лишнюю форму...
1
|
|
|
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
|
|||
| 16.11.2017, 16:58 [ТС] | |||
|
Огромное спасибо Вам за помощь! Вы Человек с большой буквы!!!!!)
0
|
|||
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 16.11.2017, 17:02 | |
Сообщение было отмечено ershov_pavel как решение
Решение
Да не надо завтра) Вот проверьте.
1
|
|
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 16.11.2017, 17:08 | |
|
1
|
|
|
1 / 1 / 0
Регистрация: 11.01.2017
Сообщений: 83
|
|||
| 17.11.2017, 10:21 [ТС] | |||
|
В очередной раз убеждаюсь, что мир не без добрых людей!) Добавлено через 2 часа 24 минуты
1
|
|||
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 17.11.2017, 10:25 | |
|
В принципе, вы в другом мероприятии все равно не измените дату, даже если там останется галочка. Потому что в коде обрабатываются сугубо те записи, которые касаются конкретного мероприятия, активного в данный момент.
Но да, в принципе, нужно это изменить, чтобы не оставлять за собой мусор. Щас глянем.
1
|
|
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
||||||
| 17.11.2017, 10:28 | ||||||
Сообщение было отмечено ershov_pavel как решение
Решение
По сути, просто добавляем в код одну строку:
1
|
||||||
| 17.11.2017, 10:28 | |
|
Помогаю со студенческими работами здесь
20
Как получить значение переменной из предыдущей страницы Значение из предыдущей записи этого же поля Заполнить значение поля таблицы из другого поля этой же таблицы, но предыдущей записи Поле, автоматически высчитывающее своё значение исходя из предыдущей записи Как передать значение поля из ActiveX в поле броузера? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|