powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Результат вычислений - в таблицу
18 сообщений из 18, страница 1 из 1
Результат вычислений - в таблицу
    #32883256
Дуб-дубом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как хранить в таблице рез-ты вычислений? Может это и не совсем правильно, но на главной форме есть несколько полей, в которых обрабатывается сумма позиций из трех подч.форм. Обработка весьма запутанная - всякие коэффициенты, суммы разных комбинаций и прочая хрень(что-то типа строительной сметы).
Дело в том, что полученные значения потом используются в других частях программы и каждый раз их заново вычислять проблемно.
Пробовал на Текущую запись гл.формы повесить процедуру расчета данных и присвоение результата полям, но:
1. поля заполняются, почему-то, только в режиме отладки, в обычном режиме данные в поле не заносятся.
2. не совсем понятно, как обеспечить теперь "попадание" в гл.форму измененной суммы позиций подч.формы, когда в ней изменяются данные?
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32883326
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) У вас где-то ошибка. Приведенная вами информация оставляет мало шансов разгадать какая и где.

2) Надо освежать расчет тоталов в главной форме при событие текущие подчиненных и/или при изменении записей подчиненных.

А по хорошему надо было бы поковыряться и сделать расчеты на уровне запросов с iif'ами, case'ами групповыми операциями и прочими, а не на уровне форм.
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32883939
Дуб-дубом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В подч.форме на Текущая запись пишу:
Код: plaintext
1.
2.
Private Sub Form_Current()
Forms!Смета!РаботыСтоим = Me!Итого
End Sub
,где Итого - поле в Примечании подч.формы, где суммируются данные строк.
Получаю стандартное: "Невозможно присвоить значение полю..."
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884137
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо выбрать одно из двух.

Либо задать ControlSource на главной форме для поля !РаботыСтоим как =<Вложенная форма>.Form!Итого и рефрешить, рекверить.

Либо оставить его свободным, но в подчиненной вложенной писать в обработчиках событий Me.Parent!РаботыСтоим = Me!Итого

P.S. Кириллицу в именах таблиц, полей и пр. - не люблю. Не лень при набивке кода все время туда-сюда переключаться ?
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884222
Дуб-дубом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЛибо оставить его свободнымтак если его свободным оставить, то в таблице результаты не появятся. У меня сейчас все эти поля(17 штук) - свободные , а в Данные указана формула расчета значения, в итоге - значения считаются, но нигде не сохраняются.
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884274
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужно заносить данные в таблицу, то логично сделать кнопку "Сохранить" и в ней обработчик событий.

А я бы все-таки постарался сделать на уровне запросов...
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884461
Дуб-дубом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дык как енто сделать?
Исходные данные - итоговые суммы из подч.форм. На их комбинациях вычисляются 17 параметров сметы(поля в главной форме). Запрос-источник ее не видит исходных данных, как их в нем обсчитывать?
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884482
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подчиненные формы опираются на данные. В них происходят вычисления. Значит можно написать запросы, которые будут делать то же самое.

В подчиненных формах есть итоговые поля. Стало быть можно взять построенные запросы, просуммировать необходимое и связать с таблицей, которая служит источником данных для главной формы.
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884613
Дуб-дубом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробывал:
1.Взял только одну подч.форму(для простоты)
2.Главная форма основана на табл.Сметы, подч на СметыРаботы. Таблицы связаны по КодСмета.
3.Создал запрос к СметыРаботы, в нем считаю и итоговую сумму по строкам и все 17 значений, которые на ней основаны.
И как теперь это все закинуть в табл Сметы? Кнопку Записать как-то не хочется добавлять.
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884633
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, итоговый запрос уже получился.

Теперь можно взять главную таблицу Сметы и Left Outer Join <суммирующий запрос> по полю КодСмета.

Все это дело посунуть главной форме в качестве источника данных. После этого суммирующие поля из запроса можно смело шлепать на форму.

Для обновления сумм надо будет вызывать Refresh, Requery главной формы.

То есть при наличии элементарных данных итоговые суммы можно в базе не хранить, они будут расчитываться автоматически, когда вы захотите взглянуть на них через формы, отчеты.
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884717
Дуб-дубом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Все так и вышло, только Requery главной формы придется прописывать на ПослеИзменения каждой поч.формы?
2. А данные так и не сохраняются...
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884779
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Если Refresh'а будет недостаточно.

2. НЕ НАДО сохранять данные, которые считаются "на лету" в момент возникновения в них надобности.
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884784
Дуб-дубом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще:
Итоговый запрос состоит, в свою очередь, из других запросов - по числу подч.форм, в моем случае это будет 3 запроса, объединенные в итоговом запросе. Это нормально?
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32884854
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если меделенно работает, надо оптимизировать. Если нет - оставить как удобнее для проектирования.

(Мне приходится граф запросов рисовать в PowerPoint чтобы не запутаться что куда входит.)
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32885090
Дуб-дубом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор2. НЕ НАДО сохранять данные, которые считаются "на лету" в момент возникновения в них надобности.
Большая часть этих данных потом используется в разных местах, в т.ч. и в отчетах(в аналитике).
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32885171
Дуб-дубом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще:
Запрос основной формы в результате стал необновляемый, а форма предназначена для ввода данных
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32885508
Дуб-дубом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Продолжаю беседовать сам с собой:
Пришлось на основе итогового запроса создать еще одну подч.форму только с расчетными значениями.
Появились проблема: при добавлении/изменении строк в "рабочих" подч.формах, по их событию AfterUpdate, делаю Refresh главной формы, при этом меняются и данные в итоговой подч.форме.
Но если в "рабочих" подч.формах удалить записи, то не удается изменить данные в итоговой подч.форме, на какое событие процедуру не вешай.
...
Рейтинг: 0 / 0
Результат вычислений - в таблицу
    #32885758
Ольга_Т
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы храним подобные расчетные данные в главной таблице.
Пересчет автоматически запускается рано утром до прихода сотрудников, так что если в результате сбоя сумма в главной таблице разошлась с хранимыми данными, в начале дня сотрудники гарантированно будут иметь на формах и в аналитике правильные значения.
Сами формы ничего не считают, но при обновлении и при сохранении внесенных в форму данных снова происходит пересчет, не тотальный, как утром, а текущего документа. Изменения в формах можно делать только по нажатии кнопочки разрешения редактирования, на ее отжатие вызывается пересчет.
Результаты вычислений в таблице, все расчеты только в коде (запросами или вызовом хранимой процедуры).
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Результат вычислений - в таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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