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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Не могу «в лоб» подсчитать итоговую сумму в отчете по полю «всего»
 
 автор: ser60   (01.03.2011 в 19:02)   личное сообщение
 
 

Не могу «в лоб» подсчитать итоговую сумму в отчете по полю «всего», данные для которого рассчитываются =[Ставок]*[итого]. Акс ругается «Введите значение параметра «итого». Данные для поля «итого» в отчете также рассчитываются. Как решить проблемку? Суммирование [Ставок] « в лоб» проходит нормально.

  Ответить  
 
 автор: час   (01.03.2011 в 20:25)   личное сообщение
 
 

попробуйте строку запроса сюда кинуть....
или таблицу, с минимумом записей и запрос ...(файлик маленький)

  Ответить  
 
 автор: ser60   (02.03.2011 в 04:21)   личное сообщение
 
 

SELECT Ттаб.*, сДолжностей.SalaryGroup
FROM Ттаб INNER JOIN сДолжностей ON Ттаб.Должность = сДолжностей.Код
WHERE (((Ттаб.Отделение)=[Forms]![Ттаб]![Отделение]));
в отчете по каждой строке есть несколько вычисляемых полей [итого], [оклад], [ПЭН], [КатегОплата], [вредность], [ДоплСтаж], [ДоплСтеп]. Итого - это сумма остальных перечисленных полей, Каждое перечисленное поле, кроме ИТОГО, вычисляется по базовому должностному окладу из поля БДО, которое в свою очередь берется из глобальной переменной
Поле Всего находится в меня заголовке отчета

  Ответить  
 
 автор: Анатолий (Киев)   (01.03.2011 в 21:13)   личное сообщение
 
 

Где находится поле "Итого", какое в нем выражение?
В аргументе функции Sum и подобных может указываться только имя поля из источника формы/отчета или выражение с участием таких полей..

  Ответить  
 
 автор: kot_k_k   (01.03.2011 в 23:14)   личное сообщение
 
 

недавно похожее было
если в примечании группы стоит поле ИТОГО =Sum(поле1 * поле2)
то в примечании группы более высокого уроня фишка = Sum([ИТОГО]) - не катит нужно по любому писать =Sum(поле1 * поле2) * Sum([Ставок])
или че там у вас

  Ответить  
 
 автор: ser60   (02.03.2011 в 04:33)   личное сообщение
 
 

в поле ВСЕГО по строке = ставок*итого (Это акс считает), а вот сумму Поля 54=sum([всего]) или =Sum([Ставок]*[итого]) Акс не считает. Поле54 находится уже в заголовке отчета или примечании

  Ответить  
 
 автор: kot_k_k   (02.03.2011 в 08:39)   личное сообщение
 
 


=Sum([Ставок]*[итого])



разложите на составляющие, т.е. чему равно поле Ставок и чему равно поле Итого, получим
= Sum(Sum(формула расчета поля ставок) * Sum ([оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп] )


а вот если поле итого=[оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп],
расчитать непосредстенно в отчете для каждой строки



SELECT Ттаб.*, сДолжностей.SalaryGroup,   [оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп]   as Итого 
FROM Ттаб INNER JOIN сДолжностей ON Ттаб.Должность = сДолжностей.Код
WHERE (((Ттаб.Отделение)=[Forms]![Ттаб]![Отделение]));


то тогда его можно использовать как Sum([Итого])

  Ответить  
 
 автор: ser60   (02.03.2011 в 11:48)   личное сообщение
 
 


=Sum(Sum([Ставок]*([оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп])))


на акс пишет: "Невозможно исползование статистической функции в выражении (цитируемое выражение, см выше)"



а вот если поле итого=[оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп],
расчитать непосредстенно в отчете для каждой строки


Так и есть по строк итого, а в следующем поле итого*Ставок=всего
а нужно суммировать всего по всем строкам в примечании отчета

  Ответить  
 
 автор: kot_k_k   (02.03.2011 в 13:57)   личное сообщение
 
 


расчитать непосредстенно в отчете для каждой строки


извините не в отчете - в запросе



=Sum(Sum([Ставок]*([оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп])))

на акс пишет: "Невозможно исползование статистической функции в выражении (цитируемое выражение, см выше)"



извините но было написано Sum(формула расчета поля ставок) - а вы опять написали поле [Ставок]

покажите плиз чему равно или откуда вылазит поле - [Ставок] , как вы его получаете.


п.с. ставОк - по украински - пруд

  Ответить  
 
 автор: ser60   (02.03.2011 в 04:15)   личное сообщение
 
 

Поле "итого" находится в той же строке, что и ниже перечисленные аргументы
Итого=[оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп], при этом каждый из этих аргументов также рассчитывается по единому базовому должностному окладу (БДО), появляющемуся в форме из глобальной переменной.
Можно конечно тупо прописать в запросе величину БДО в качестве самостоятельного поля, но тогда возникнет необходимость его вручную менять в этом запросе.

  Ответить  
 
 автор: Анатолий (Киев)   (02.03.2011 в 10:40)   личное сообщение
 
 


Можно конечно тупо прописать в запросе величину БДО в качестве самостоятельного поля, но тогда возникнет необходимость его вручную менять в этом запросе.

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

  Ответить  
 
 автор: ser60   (02.03.2011 в 11:28)   личное сообщение
 
 

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

  Ответить  
 
 автор: Анатолий (Киев)   (02.03.2011 в 16:57)   личное сообщение
 
 

Как бы вы не формировали зеачение переменной, чтобы использовать ее в запросе, нужно написать функцию типа:

Public Function MyFunc()
  MyFunc = ГлобальнаяПеременная
End Function

Вот ее и используйте в запросе.

  Ответить  
 
 автор: ser60   (02.03.2011 в 18:41)   личное сообщение
 
 

Спасибо, Анатолий! Ваша подсказка помогла!

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