|
|
|
| Не могу «в лоб» подсчитать итоговую сумму в отчете по полю «всего», данные для которого рассчитываются =[Ставок]*[итого]. Акс ругается «Введите значение параметра «итого». Данные для поля «итого» в отчете также рассчитываются. Как решить проблемку? Суммирование [Ставок] « в лоб» проходит нормально. | |
|
| |
|
|
|
| попробуйте строку запроса сюда кинуть....
или таблицу, с минимумом записей и запрос ...(файлик маленький) | |
|
| |
|
|
|
| SELECT Ттаб.*, сДолжностей.SalaryGroup
FROM Ттаб INNER JOIN сДолжностей ON Ттаб.Должность = сДолжностей.Код
WHERE (((Ттаб.Отделение)=[Forms]![Ттаб]![Отделение]));
в отчете по каждой строке есть несколько вычисляемых полей [итого], [оклад], [ПЭН], [КатегОплата], [вредность], [ДоплСтаж], [ДоплСтеп]. Итого - это сумма остальных перечисленных полей, Каждое перечисленное поле, кроме ИТОГО, вычисляется по базовому должностному окладу из поля БДО, которое в свою очередь берется из глобальной переменной
Поле Всего находится в меня заголовке отчета | |
|
| |
|
|
|
| Где находится поле "Итого", какое в нем выражение?
В аргументе функции Sum и подобных может указываться только имя поля из источника формы/отчета или выражение с участием таких полей.. | |
|
| |
|
|
|
| недавно похожее было
если в примечании группы стоит поле ИТОГО =Sum(поле1 * поле2)
то в примечании группы более высокого уроня фишка = Sum([ИТОГО]) - не катит нужно по любому писать =Sum(поле1 * поле2) * Sum([Ставок])
или че там у вас | |
|
| |
|
|
|
| в поле ВСЕГО по строке = ставок*итого (Это акс считает), а вот сумму Поля 54=sum([всего]) или =Sum([Ставок]*[итого]) Акс не считает. Поле54 находится уже в заголовке отчета или примечании | |
|
| |
|
|
|
|
разложите на составляющие, т.е. чему равно поле Ставок и чему равно поле Итого, получим
= Sum(Sum(формула расчета поля ставок) * Sum ([оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп] )
а вот если поле итого=[оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп],
расчитать непосредстенно в отчете для каждой строки
SELECT Ттаб.*, сДолжностей.SalaryGroup, [оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп] as Итого
FROM Ттаб INNER JOIN сДолжностей ON Ттаб.Должность = сДолжностей.Код
WHERE (((Ттаб.Отделение)=[Forms]![Ттаб]![Отделение]));
|
то тогда его можно использовать как Sum([Итого]) | |
|
| |
|
|
|
|
=Sum(Sum([Ставок]*([оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп])))
|
на акс пишет: "Невозможно исползование статистической функции в выражении (цитируемое выражение, см выше)"
а вот если поле итого=[оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп],
расчитать непосредстенно в отчете для каждой строки
|
Так и есть по строк итого, а в следующем поле итого*Ставок=всего
а нужно суммировать всего по всем строкам в примечании отчета | |
|
| |
|
|
|
|
расчитать непосредстенно в отчете для каждой строки
|
извините не в отчете - в запросе
=Sum(Sum([Ставок]*([оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп])))
на акс пишет: "Невозможно исползование статистической функции в выражении (цитируемое выражение, см выше)"
|
извините но было написано Sum(формула расчета поля ставок) - а вы опять написали поле [Ставок]
покажите плиз чему равно или откуда вылазит поле - [Ставок] , как вы его получаете.
п.с. ставОк - по украински - пруд | |
|
| |
|
|
|
| Поле "итого" находится в той же строке, что и ниже перечисленные аргументы
Итого=[оклад]+[ПЭН]+[КатегОплата]+[вредность]+[ДоплСтаж]+[ДоплСтеп], при этом каждый из этих аргументов также рассчитывается по единому базовому должностному окладу (БДО), появляющемуся в форме из глобальной переменной.
Можно конечно тупо прописать в запросе величину БДО в качестве самостоятельного поля, но тогда возникнет необходимость его вручную менять в этом запросе. | |
|
| |
|
|
|
|
Можно конечно тупо прописать в запросе величину БДО в качестве самостоятельного поля, но тогда возникнет необходимость его вручную менять в этом запросе.
| Если вся проблема в глобальной переменной, то напишите в том же модуле функцию, возвращающую значение переменной. Ее и используйте в вычисляемых полях запроса. | |
|
| |
|
|
|
| Глобальная переменная является результатом подпрограммы, выичсляемой при загрузке начальной формы, а не функции. Наверное можно написать подпрогрмму как функцию, которая выдает результат от незначащего аргумента. Но криво как то получается | |
|
| |
|
|
|
| Как бы вы не формировали зеачение переменной, чтобы использовать ее в запросе, нужно написать функцию типа:
Public Function MyFunc()
MyFunc = ГлобальнаяПеременная
End Function
|
Вот ее и используйте в запросе. | |
|
| |
|
|
|
| Спасибо, Анатолий! Ваша подсказка помогла! | |
|
| |