Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Вопрос по VBA для Access сумма с накоплением


Автор: inter57 27.3.2008, 11:34
Здравствуйте! В отчетах Access есть функция сумма с накоплением . Можно ли тоже самое сделать в таблице?

Автор: Akina 27.3.2008, 13:47
Без хранения переопределенных данных и сопутствующей угрозы разрушения целостности данных - нет. 

Автор: inter57 1.4.2008, 15:32
Извините, я слабо разбираюсь в програмировании, но такая функция у меня была. Еще раз поподробнее: было значение в строках поля 1 2 3 4 5 6 надо получить в этом же поле 1 3 6 10 15 21 и т.д.    Спасибо.

Автор: Akina 1.4.2008, 17:56
Цитата(inter57 @  1.4.2008,  16:32 Найти цитируемый пост)
было значение в строках поля 1 2 3 4 5 6

Чем задается именно такой порядок записей? на "так отображается" или "в таком порядке заносили" не кивать - в Аксессе такие утверждения не имеют смысла

Автор: inter57 1.4.2008, 18:40
 В моем случае таблица создается запросом на создание таблицы. Первое поле Дата по возрастанию, а во втором сумма, которую и надо посчитать с накоплением.  

Автор: Akina 1.4.2008, 22:57
То есть сортировка по дате.

Итак. Умножаем таблицу на себя. Делаем отбор по Дата в копии 1 > Дата в копии 2. Группируем по Дата2 и считаем сумму.  

Однако это будет подсчет в запросе, а не занесение в таблицу.

Автор: kapbepucm 5.4.2008, 18:49
Цитата(inter57 @  1.4.2008,  15:32 Найти цитируемый пост)
было значение в строках поля 1 2 3 4 5 6 надо получить в этом же поле 1 3 6 10 15 21

Если есть Table1:
Код
===========
  Field1
-----------
     1
     2
     3
     4
     5
     6
===========
а надо сделать Table2:
Код
===================
  Field1   Field2
-------------------
    1        1
    2        3
    3        6
    4       10
    5       15
    6       21
===================
то, имея функцию
Код
Public Function GetX(X As Long) As Long
  Dim A As Long, I As Long
  A = 0
  For I = 1 To X
    A = A + I
  Next I
  GetX = A
End Function

и написав запрос
Код
SELECT Table1.Field1, GetX([Table1].[Field1]) AS Field2 FROM Table1;
виден результат. Если я правильно понял задание.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)