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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Запрос на умножение (А2003)
 
 автор: ЛМВ   (30.08.2011 в 08:01)   личное сообщение
 
 

Как создать запрос группировки, чтобы записи не суммировались, а умножались?

  Ответить  
 
 автор: час   (30.08.2011 в 08:16)   личное сообщение
 
 

Даже не представляю как это...

  Ответить  
 
 автор: ЛМВ   (30.08.2011 в 08:23)   личное сообщение
 
 

Да... Я думал, что уже что-то придумано на эту тему в акцессе.
Иногда нужно значения записей не сложить,
SELECT Sum(SumDoc) AS ВСЕГО FROM тбл_Реестр
а перемножить.
SELECT ???(SumDoc) AS ВСЕГО FROM тбл_Реестр

  Ответить  
 
 автор: час   (30.08.2011 в 08:32)   личное сообщение
 
 

Может попробовать Sum(SumDoc)*(SumDoc)
хотя .........не уверен
А вообще - что за таблица?
==========================
А может нужно два запроса
В первом перемножить, а во втором сгруппировать
А что тогда группировать, если надо перемножить.....
Чё та я туплю сёдня с самого утра.....
=======================================
По моему "Вы даёте не реальные планы"
этот, как его Волюнтаризм
В моём доме не выражаться
А чё я сказал?

  Ответить  
 
 автор: Силblч   (30.08.2011 в 09:41)   личное сообщение
 
 

сначала разберитесь - что же из себя представляет операция умножения

  Ответить  
 
 автор: ddi   (30.08.2011 в 10:14)   личное сообщение
 
 

тебе надо sum(поле)*sum(поле) или поле*поле*поле ... * поле?

  Ответить  
 
 автор: ddi   (30.08.2011 в 10:14)   личное сообщение
 
 

  Ответить  
 
 автор: kot_k_k   (30.08.2011 в 10:20)   личное сообщение
 
 

а какой смысл может иметь такое выражение? что в конце нужно получить?

  Ответить  
 
 автор: ddi   (30.08.2011 в 10:22)   личное сообщение
 
 

по моему нет смысла

  Ответить  
 
 автор: ЛМВ   (30.08.2011 в 12:05)   личное сообщение
 
 

А какой смысл имеет слово смысл?
В калькуляциях часто происходит не сложение, а умножение одной строки на другу.
В ексель это делается "на раз". А в акцессе? Пока никак.

  Ответить  
 
 автор: ЛМВ   (30.08.2011 в 11:59)   личное сообщение
 
 

Возьмем таблицу "тбл_Пример" с одним полем "Значения" (для простоты).
Сделаем несколько записей.
2
3
4
Вот такой запрос
SELECT Sum(тбл_Пример.Значения) FROM тбл_Пример
даст результат 9 (т.е. 2+3+4)
а нужно: 24 (2*3*4).
SELECT УМНОЖЕНИЕ(тбл_Пример.Значения) FROM тбл_Пример

  Ответить  
 
 автор: kot_k_k   (30.08.2011 в 12:06)   личное сообщение
 
 

точ о вы хотите получить - ужо понятно - вот только непонятоно зачем

как вариант

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

  Ответить  
 
 автор: kot_k_k   (30.08.2011 в 12:09)   личное сообщение
 
 

вот только если будет 3-х и более значные цифры в поле очень может быть Акс заорет о переполнении или какую другую истерику закатит (возможно по этому и нет таких автофункций)

  Ответить  
 
 автор: ЛМВ   (30.08.2011 в 12:16)   личное сообщение
 
 

ОК.
Думаю, то, что нужно (а будет работать? ).
Зачем - писал выше.
Калькуляции.

СПАСИБО!!!

  Ответить  
 
 автор: kot_k_k   (30.08.2011 в 12:28)   личное сообщение
 
 

1. работать будет - но значительно медленне (от размеров базы зависит)
2. в калькуляциях да есть строки но там умножаются коэффициенты и потом на конкретную строчку - возможно нужно пересмотреть сам способ организации калькуляции.

3. как вариант еще одно исполнение - запросами - тут были темы объединение в строку нескольких значений записей одного поля. создать запрос который "собирает" строку типа зн.1 * зн.2 * .... * зн.Н и эту строку загнать через функцию преобразования строки в формулу ивычисления ее (название из головы вылетело) . возможно так будет работать быстрее.

  Ответить  
 
 автор: ЛМВ   (30.08.2011 в 12:37)   личное сообщение
 
 

У меня тоже вылетело... эээ... Eval()?

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

может коэф. добавлть в тексторое поле сразу формируя строку для Eval() - и отдельно формируя поле из тех коэф. которые использовал юзер для их вывода на экран при редактировании

т.е. добавить 2 - 3 текстовых поля - в одном код коэффициентов применных к этой строке через разделитель, их значения через разделитель , и строку для Eval()

  Ответить  
 
 автор: час   (30.08.2011 в 13:09)   личное сообщение
156 Кб.
 
 

И много строк нужно перемножить?
Имеются ли условия для выборки и перемножения только определённых строк?
это шутка====>

  Ответить  
 
 автор: час   (30.08.2011 в 13:14)   личное сообщение
 
 

А ваще надо бежать по рекордсету и
множить множить множить........
Потому как множить надо на значение следующей строки, а результат на значение следующей строки - мну кажется в запросе это го не сделать.

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

Функции Access — идентичны своим двойникам в Microsoft Excel и используют те же аргументы.
http://office.microsoft.com/ru-ru/access-help/HA010131676.aspx

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

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

  Ответить  
 
 автор: час   (30.08.2011 в 13:51)   личное сообщение
 
 

ЛМВ видать нащупал что то

  Ответить  
 
 автор: ё   (05.09.2011 в 15:35)   личное сообщение
 
 

...
Потому как множить надо на значение следующей строки, а результат на значение следующей строки - мну кажется в запросе это го не сделать.




SELECT Exp(Sum(Log(T.id))) ...

  Ответить  
 
 автор: час   (05.09.2011 в 16:18)   личное сообщение
 
 

а Id следующей строки - где брать?

  Ответить  
 
 автор: ё   (05.09.2011 в 16:24)   личное сообщение
 
 

"следующей строки", относительно ЧЕГО ??

я тебя "удивлю" щас ... :)))

от перестановки множителей - результат не меняется

  Ответить  
 
 автор: час   (05.09.2011 в 16:53)   личное сообщение
 
 


СМЕШ_но, но решения я ни понял

  Ответить  
 
 автор: ё   (05.09.2011 в 18:27)   личное сообщение
 
 


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;


xz    txt
12    one
60    two

  Ответить  
 
 автор: час   (05.09.2011 в 18:33)   личное сообщение
 
 


Класс!!!

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