powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вертикальные вычисления (между записями)?
14 сообщений из 14, страница 1 из 1
Вертикальные вычисления (между записями)?
    #32166943
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые ловцы енотов! ;)
Вопрос теоретический:
возможно ли (имеет ли смысл/целесообразность/ и т.д.) выполнять расчеты между записями простыми средствами (без больших трудозатрат).
Типичная проблема: форма 2 нашего баланса, та самая, где
выручка - себестоимость = валовый доход - издержки = финрезультат
и расчеты по ней вроде
ср.торг.надбавка = валовый доход / выручка
...
и т.д.

Проблема решается хранением всех агрегированных данных в одной записи -
месяц - выручка - себестоимость - издержки ...
- и считай, что хошь!
Но издержки (список из Х наименований) удобнее и рациональнее хранить списком в подчиненной таблице, связанной по коду с 1 записью главной (или я не прав?..).
В итоге получается 2 отчета: горизонтально ориентированный с месяцами в строках
месяц - выручка - себестоимость - издержки ...
и вертикально ориентированный

наим. статьи затрат / янв - дек / кв1 - кв4
статья / сумма ... сумма

Как бы собрать эти два отчета в один, вертикальный?

Наим. / янв - дек / кв1 - кв4
выручка
себестоимость
издержки ВСЕГО
в т.ч.
+изд1
+...
+изд50
Финрез
Чистая прибыль

???
ПРоблема как раз в расчетах между строками...
Предложите варианты решения, плиз, кроме Dlookup...
Особенно к Владимиру Санычу, в недавнем топике было его предложение с использованием коэфф., на которые
домножать строки - наверное, попадалось что-то похожее?
Как вообще выходить с честью из цейтнота со сложными расчетами по таблице?..
Как народ эту проблему решает?
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32166980
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Особенно к Владимиру Санычу

Боюсь, что мне придется самоустраниться. Почему-то в этом форуме считается, что все специалисты по Аксессу автоматом являются специалистами по бухгалтерии и знакомы со всеми "теми самыми формами нашего баланса". Наверно, сейчас в России все программисты занимаются одними и теми же формами. Мне это странно, я не знаком с бухгалтерской терминологией ни российской, ни израильской.
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32167016
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВС
Вопрос все-таки по програмированию - ПО СЛОЖНЫМ ВЫЧИСЛЕНИЯМ в Access,
конкретно - когда нужно часто и много данных для расчетов выбирать из разных записей
(в одной-то записи все просто!..)
Какая разница, где оно применяется?
Поэтому и вопрос озаглавлен ТЕОРЕТИЧЕСКИМ, а не практическим.

2All
Ну поделитесь же мыслями и своими примерами выхода из положения, уважаемые!..
НУ как-то ведь работает тот же Project Expert, да?..
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32167101
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Но вопрос сформулирован в терминах той области, в которой я не разбираюсь. Видимо, прочитав слово издержки, кто-то может сразу сообразить, какова логическая связь между ними и всем остальным, и сам себе перевести вопрос в термины таблиц, записей и ключей. Я этого сделать не могу, в результате просто вопроса не понимаю.

Если же отвечать на вопрос в новой формулировке (что делать со сложными вычислениями), то могу ответить столь же расплывчато: не жалеть времени на проектирование базы, продумать все до мелочей. Более подробно я не отвечу, потому что не понимаю, какие там данные и какова взаимосвязь между ними.
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32167126
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Могу ответить на две фразы, которые мне удалось понять, вырвав из контекста.

1. Чтобы превратить строки отчета в столбцы, надо его посадить на CrossTab Query.

2. Если требуется делать много обращений к разным записям, то можно обратиться один раз, загрузить все в память и потом брать оттуда.
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32167175
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК, конкретизирую в упрощенном виде (много строк)

Нужен отчет (строки):
(1) Товарооборот
(2) Себестоимость
(3) Валовый доход = (1)-(2)
(4) Наценка,% = (3)/(1)
(5) Издержки ВСЕГО
(5.1.) Зарплата
...амортизация
...налоги
(5.45) и т.д.
(6) Финрезультат (3)-(5)

Ранее структура базы была такой:
Дата ГруппаСтатьи Статья Сумма
1/1/3 Товарооборот Null 1000
1/1/3 Себестоимость Null 700
1/1/3 Издержки Зарплата 100
1/1/3 Издержки налоги 300

Мне это показалось неверным. Так?

Переделали в такую:

Дата Товарооборот Себестоимость .../остальные агрегаты/ Связь_с_табл_издержек
1/1/3 1000 700 ... <Линк на ключ>

Подч. таблица издержек:
КлючЖурналаАгрегатов Статья Сумма
<Ключ> Зарплата 50
<Ключ> Налоги 250

Так корректнее, верно?

НО: в первом случае были проблемы с расчетами (между записями!!!), зато отчет был точно как надо,
как описано выше ("Нужен отчет (строки):")
во втором нет проблем с расчетами (в пределах одной записи все просто),
но отчет распался на два:

1. Отчет Агрегатов
Дата Товарооборот Себестоимость .../остальные агрегаты/ Издержки_ВСЕГО
и
2. Издержки
Издержки_ВСЕГО 100%_к_итогу
в т.ч.
зарплата 20%
налоги 45%
...

Как свести отчет к нужному (первому) варианту?..
Расчеты сразу в таблице при заполнении из формы вести нельзя:
а) так завещал великий Хто-то
б) когда сложишь товарообороты / себестоимости по нескольким датам (за период), что,
% (процент) наценки тоже складывать? ;)))))))))))))

---
Так, вижу ответ ВС.
Спасибо!
Но:
1.CrossTab и так использую на таблице издержек, по вертикали идут статьи, по горизонтали месяцы.
В отчете Агрегатов же по горизонтали их наименования (товарооборот, себестоимость...),
по вертикали - месяцы и группировка поквартально.

Думал над вариантом сделать "поворот" и таблицы агрегатов, но это уже не кросстаб,
а натуральное транспонирование всей таблицы получится. Ручками?..

2. Это получится уже на VBА, так?
Тут была тема с адресацией к любому полю таблицы, ее использовать?..
Можно, но мучительно долго...
Вот и ищу способ попроще...
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32167193
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Вот и ищу способ попроще...

MS Excel
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32167204
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХЛ хорош, когда 1 (один) раз составил и забыл.
А теперь представим (только представим ;),
что есть несколько отчетов и их нужно сводить в один каждый месяц.

Что удобнее - лепить еще сводный лист в ХЛ и долбить кучу ссылок на листы с данными, ошибаясь в формулах (как и было до базы)
или запустить один запросик, повышающий уровень группировки?
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32167480
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не въехал в "улучшения". "раньше" ключ связи - дата. Создай запрос с многократной связью таблицы на себя по значению ключа и различным значениям кода группы - будет тебе счастье. т.е. "горизонтальный набор". Вычисляй в ем что хошь "по горизонталям".

Если набор кодов_группы заведомо фиксирован - запрос строится и в "жесткую". если нет - кросс-табом можно получить. Правда плавающее количество столбцов для отчета (или нового запроса на его основе) не фонтан. - тады SQL кваери-дефов придется редактировать программно.


ЗЫ: да, кросс табу, если каких записей (по группам) не хватает, лучше строить на основе юниона с пустышкой: - [первый столбец - дата (константа,скажем наподобие #01.01.1900#) As aDate, второй столбец - коды групп из справочника (все), остальные - аналог прочих столбов таблы с 0 во всех полях] -т.е. забиваешь жесткое число "столбцов"(групп), будущего перекрестного. И имеешь набор данных с "полным набором "столбов", т.е. пригодный для создания юзающих его запросов (или репортов). А в этих уж считай, как хошь.
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32167589
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По горизонталям и в новой структуре хорошо вычисляется ;)))
Проблема в том , что вычисления всегда будут и по горизонтали, и по вертикали.

А старая структура была ну совсем ненормализованной -
зачэм куча строк, где группа - "Издержки?.."

Ответа нет...
Спецы, отзывайтесь!..
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32167609
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тады не въехал в проблему. "Вертикаль" это разные балансы (даты)? И какие проблемы? В отчетах - есть группировки. Как правило достаточно.
В формах (ежели простые) - примечания. Группы можно обсчитывать и по рекордсетам. Опять же не проблема налепить группировки одного запроса и вывести несколько субформ. по типам группировки. А в чем вопрос? Иметь ексел в аксесе? так сбрось данные
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32169711
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простой пример:
Есть 2 строки:

Дата1 Сальдо1 Приход Расход Возврат Оплата Коэф1
Дата2 Сальдо2 Приход Расход Возврат Оплата Коэф2

Как рассчитать
Сальдо1*Коэф2-Сальдо2 ?
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32169745
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Как рассчитать
Сальдо1*Коэф2-Сальдо2 ?

Я делал подобное, но без умножения/деления
Просто

5*Значение1-Значение2+Значение3*8+значение7+значение7

Храняться Значения и коэфициент (со знаком). Запросом - просто все суммируется.

В товем конкретном случае надо все ручками делат через DlookUp c критерием, например. Или действительно в Екцеле. Скинул все данные на листы, а на отчетном листе ссылок на нужные позиции по напихал. И привалило бы тебе счастье.
...
Рейтинг: 0 / 0
Вертикальные вычисления (между записями)?
    #32169880
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если строки именно 2 и именно это с ними надо сделать - открой рекордсет и посчитай. если же есть некое правило, по которому со строками "такими-то" надо делать "так-то" - тогда надо напрячься, составить запрос, где данные по критерию "такие-то" влезали "в строку" и возиться с ними.
а "вертикально" обсчитывать агрегаты по функциям "строк" (в т.ч. с условиями).

Например для именно этих двух строк - кинь таблу дважды на конструктор запросов. Выставь критерии отбора для одной записи в первой (таблице), для другой записи - во второй (желательно по ключу). Получишь общую строку. (т.е. получишь "прямое произведение наборов - без Join-ов, но с where, по 1-й записи в каждом, итого - 1 запись). В ней и считай.

Select a.Saldo as SaldoA, b.Saldo as SaldoB, a.Koef as KoefA, bKoef as KoefB, a.Saldo - b.Saldo * a.Koef as MyResult
from tabla as a, tabla as b
where a.key = [aKey] and b.key = [bKey];

В общем случае - может иметься связь или в join, или в where наподобие:
a.key=b.key + [Shift]. ну и т.п. и т.д.

Если ломает составлять требуемые наборы данных - работай с рекордсетами.
(извини, оторвали)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вертикальные вычисления (между записями)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]