Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Групировка и суммирование в форме
 
 автор: Pasat   (26.12.2006 в 13:26)   личное сообщение
24 Кб.
 
 

В простой форме [F1] имеется одна табличная форма [F2] с данными и вторая табличная форма [F3] в которой путем запроса вычислены данные из первой формы [F2] (поле [PVN] группировка и поле [Summa] суммирование)
Как можно сделать так чтобы при изменении значений полей [кол-во] или [цена] в форме [F2] изменялись бы итоговые значения в форме [F3]
Я только смог придумать один способ: закрыть и открыть форму [F1], но этот способ не подходит форма [F1] может иметь многие записи и при открытии не найдетcя та запись на которой мы находились при закрытии формы [F1].
Как это выглыдит можно посмотреть в приложенном файле.
Заранее благодарен.

  Ответить  
 
 автор: osmor   (26.12.2006 в 17:32)   личное сообщение
13 Кб.
 
 

requery
см. приложение

  Ответить  
 
 автор: Pasat   (26.12.2006 в 22:20)   личное сообщение
 
 

Огромное спасибо
Даже не верится, что могло быть такое простое решение
С уважением ПАССАТ

  Ответить  
 
 автор: Pasat   (22.01.2007 в 09:42)   личное сообщение
19 Кб.
 
 

Доброе утро
Вот недавно появилась проблема. После изменения полей Кол-во или цена в подчиненной форме и последующего выхода из поля - обновление в расчетной форме происходит нормально, но фокус после первого нажатия ENTER или клавиш перехода не переходит на другое поле или в другую строку.
Прикрепляю собственную базу с выше описанным глюком. Ваш пример работает идеально, исходя из этого уже пробовал экспортировать все объекты в новую базу, но результат нулевой.
С уважением ПАСАТ.

  Ответить  
 
 автор: osmor   (22.01.2007 в 10:35)   личное сообщение
 
 

Причину сказать могу, но почему так происходит и как с этим бороться не знаю...
причина в том, что первая подчиненная форма приязана к данным основной формы, recalc вызывает какие-то события которые возвразают фокус в измененной поле.
если убрать связь между этими формами, то все работает как надо.
Как решить эту проблему в данной реализации я не знаю...
Можно например избавиться от второй подчиненной формы (где сумма показывается), и выводить сумму программно используя dsum (или рекордсет)
или посчитать итоги в подчинененной форме и передать их в основную как источник значения поля...
Делать пример сейчас нет времени....

  Ответить  
 
 автор: Pasat   (23.01.2007 в 00:05)   личное сообщение
29 Кб.
 
 

Спасибо, что расмотрели имеющуюся проблему.
Со своей стороны предлагаю посмотреть прилож. файл где можно видеть, что если первая подчиненная форма приязана к данным основной формы все работает нормально. Вот и у меня сначала все было ОК. Я не уверен, но мне кажется что глюк появился после того как я в модуле переставил местами процедуры т.е.
Создавая процедуры по умолчанию они были расположены так:

Private Sub c_AfterUpdate()
Call requerysum
End Sub

Private Sub k_AfterUpdate()
Call requerysum
End Sub

Private Sub n_AfterUpdate()
Call requerysum
End Sub

После перестановки стало например вот так (принудительно поменял местами):

Private Sub k_AfterUpdate()
Call requerysum
End Sub

Private Sub n_AfterUpdate()
Call requerysum
End Sub

Private Sub c_AfterUpdate()
Call requerysum
End Sub

и появился глюк.
Если эта информация поможет решить вопрос буду очень рад, если нет то, попрошу еще немного внимания:
если я правильно Вас поянл, что посчитать итоги в подчинененной форме и передать их в основную форму как источник значения поля это тоже самое, как в том же примере расчитано поле [T] в основной форме. Но это не совсем то что нужно, потому что сначала нужно получить суммы по группам НДС (см. запрос [КОРА] ) и только потом их суммировать. И что самое важное получить это значение в основной форме (см. поле [Т2] ). В начальном варианте все замечательно, если бы не было выше описанной проблемы с перемещением фокуса.
Если решить это не получается, то очень бы помог какой-нибудь пример который ВЫ упомянули в Вашем предыдущем сообщении (избавиться от второй подчиненной формы (где сумма показывается), и выводить сумму программно используя dsum (или рекордсет)).

А именно задача стоит так, что сначала нужно получить суммы по группам НДС (см. запрос [КОРА] ) и только потом их ссуммировав получить их сумму в поле основной формы, которое бы обнавлялось при изменении полей [кол-во] или [цена] в форме [F2].
С уважением, ПАСАТ

  Ответить  
 
 автор: Bellerofont   (23.01.2007 в 01:37)   личное сообщение
 
 

Попробуйте переименовать поле IerakstaKods в форме NoliktavasDokum1, например, в txtIerakstaKods. Я вижу проблему в том, что свойство LinkMasterFields подчиненной формы IerakstaKods равно IerakstaKod. А такое имя имеют и TextBox и поле источника записей, при этом и textbox и поле могут выступать в качестве связующего поля, что приводит к неожиданному поведению.

  Ответить  
 
 автор: Pasat   (23.01.2007 в 10:00)   личное сообщение
 
 

Спешу сообщить, что проблема устранилась
Огромное спасибо

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList