|
|
|
| Как создать запрос группировки, чтобы записи не суммировались, а умножались? | |
|
| |
|
|
|
| Даже не представляю как это... | |
|
| |
|
|
|
| Да... Я думал, что уже что-то придумано на эту тему в акцессе.
Иногда нужно значения записей не сложить,
SELECT Sum(SumDoc) AS ВСЕГО FROM тбл_Реестр
а перемножить.
SELECT ???(SumDoc) AS ВСЕГО FROM тбл_Реестр | |
|
| |
|
|
|
|
| сначала разберитесь - что же из себя представляет операция умножения | |
|
| |
|
|
|
| тебе надо sum(поле)*sum(поле) или поле*поле*поле ... * поле? | |
|
| |
|
|
|
|
| а какой смысл может иметь такое выражение? что в конце нужно получить? | |
|
| |
|
|
|
|
| А какой смысл имеет слово смысл?
В калькуляциях часто происходит не сложение, а умножение одной строки на другу.
В ексель это делается "на раз". А в акцессе? Пока никак. | |
|
| |
|
|
|
| Возьмем таблицу "тбл_Пример" с одним полем "Значения" (для простоты).
Сделаем несколько записей.
2
3
4
Вот такой запрос
SELECT Sum(тбл_Пример.Значения) FROM тбл_Пример
даст результат 9 (т.е. 2+3+4)
а нужно: 24 (2*3*4).
SELECT УМНОЖЕНИЕ(тбл_Пример.Значения) FROM тбл_Пример | |
|
| |
|
|
|
| точ о вы хотите получить - ужо понятно - вот только непонятоно зачем
как вариант
select F_Umnogenie( ID_Param ) as Znach from tabla
Function F_Umnogenie (Paramarray Ar())
F_Umnogenie=1
set dbs=currentdb
set rst=dbs.openrecordset ("select * from tabla where id=" & Ar(0))
do while rst.eof=false
F_Umnogenie=F_Umnogenie * rst.поле_для_умножения
rst.movenext
loop
end Function
|
| |
|
| |
|
|
|
| вот только если будет 3-х и более значные цифры в поле очень может быть Акс заорет о переполнении или какую другую истерику закатит (возможно по этому и нет таких автофункций) | |
|
| |
|
|
|
| ОК.
Думаю, то, что нужно (а будет работать? ).
Зачем - писал выше.
Калькуляции.
СПАСИБО!!! | |
|
| |
|
|
|
| 1. работать будет - но значительно медленне (от размеров базы зависит)
2. в калькуляциях да есть строки но там умножаются коэффициенты и потом на конкретную строчку - возможно нужно пересмотреть сам способ организации калькуляции.
3. как вариант еще одно исполнение - запросами - тут были темы объединение в строку нескольких значений записей одного поля. создать запрос который "собирает" строку типа зн.1 * зн.2 * .... * зн.Н и эту строку загнать через функцию преобразования строки в формулу ивычисления ее (название из головы вылетело) . возможно так будет работать быстрее. | |
|
| |
|
|
|
| У меня тоже вылетело... эээ... Eval()? | |
|
| |
|
|
|
| может коэф. добавлть в тексторое поле сразу формируя строку для Eval() - и отдельно формируя поле из тех коэф. которые использовал юзер для их вывода на экран при редактировании
т.е. добавить 2 - 3 текстовых поля - в одном код коэффициентов применных к этой строке через разделитель, их значения через разделитель , и строку для Eval() | |
|
| |
|
156 Кб. |
|
| И много строк нужно перемножить?
Имеются ли условия для выборки и перемножения только определённых строк?
это шутка====> | |
|
| |
|
|
|
| А ваще надо бежать по рекордсету и
множить множить множить........
Потому как множить надо на значение следующей строки, а результат на значение следующей строки - мну кажется в запросе это го не сделать. | |
|
| |
|
|
|
| Функции Access — идентичны своим двойникам в Microsoft Excel и используют те же аргументы.
http://office.microsoft.com/ru-ru/access-help/HA010131676.aspx | |
|
| |
|
|
|
| по поводу калькуляций - у них иногда меняются значения коэффициентов - так что нужно предусмотреть как их автоматическую замену, так и возможность не заменять в уже утвержденных калькуляциях | |
|
| |
|
|
|
| ЛМВ видать нащупал что то | |
|
| |
|
|
|
| ...
Потому как множить надо на значение следующей строки, а результат на значение следующей строки - мну кажется в запросе это го не сделать.
|
SELECT Exp(Sum(Log(T.id))) ...
|
| |
|
| |
|
|
|
| а Id следующей строки - где брать? | |
|
| |
|
|
|
| "следующей строки", относительно ЧЕГО ??
я тебя "удивлю" щас ... :)))
от перестановки множителей - результат не меняется
|
| |
|
| |
|
|
|
|
|
id txt
1 one
2 two
3 one
4 one
5 two
6 two
|
SELECT Exp(Sum(Log(T.id))) AS xz, T.txt
FROM T
GROUP BY T.txt;
|
| |
|
| |
|