Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/14: Рейтинг темы: голосов - 14, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.04.2021
Сообщений: 11
1

Коротко об отчетах, или как сделать меньше, чем аксес предлагает стандартно?

08.04.2021, 16:13. Показов 2643. Ответов 28

Если быть кратким, то есть новая база, которая должна хранить различные данные для учета и статистики, и если с учетом я разобрался, то вот со статистикой проблема состоит в том, что не знаю с какой стороны подойти к вопросу.

Кликните здесь для просмотра всего текста
С точки зрения создания запроса на каждый такой случай - проблем по сути нет, кроме того, что их по итогу будет 1000+)

В качестве выделения диапазона использую *Как бы это не было банально и удивительно* Between, а дальше продолжаю фильтровать запрос, пока не останутся только нужные позиции.


По сути, нужно создать отчет, который будет выдавать количество определенных позиций за определенный промежуток времени. и проблема в том, что:
а)Как дать пользователю вводить диапазон интересующих его дат самостоятельно, и просто (возможно вбивать это будет старушка лет 60, или еще хуже, просто не желающий ничему учиться сотрудник).
б)Как правильно реализовать вывод подобного отчета, ведь создавать на каждое значение файл запроса - слишком усложняет и так не простую структуру

Если кто то знает, как решать подобные задачи, то могли бы вы объяснить принцип решения, или дать ссылку на статью, где описан похожий случай?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2021, 16:13
Ответы с готовыми решениями:

Как сделать такой Сайт? Алгоритм действий коротко можно описать? Возможно ли через вордпрес? Или какие аналоги есть?
Добрый день! Мне нужен сайт, а точнее на подобие это https://hippodrom.ru/modules/horses/horse.php...

Вычислить произведение значений, которые меньше чем -1 или больше, чем 4
Вычислить произведение значений, которые меньше чем -1 или больше, чем 4.

Как сделать или чем сделать SFX, удаляющий себя после распаковки?
Подскажите плз, а как сделать или чем сделать SFX , удаляющий себя после распаковки? Предупреждаю:...

Сделать блок меньше чем 100vh
Доброго времени суток У меня чтобы прибить футер к низу страницы стоит див на всё тело, его...

28
Модератор
Эксперт MS Access
10301 / 4208 / 684
Регистрация: 07.08.2010
Сообщений: 11,893
Записей в блоге: 4
08.04.2021, 16:19 2
MortyMels,
посмотрите пример в моем блоге -
-10 полей для поиска по частичному значению
-далее отчет или по выбранной строке или по выборке

всего 1 прописанный в коде запрос на 999 вариантов выборки
1
773 / 254 / 43
Регистрация: 09.12.2016
Сообщений: 850
08.04.2021, 16:36 3
shanemac51, какой у вас классный рейтинг получился. Только посмотрите
0
0 / 0 / 0
Регистрация: 08.04.2021
Сообщений: 11
08.04.2021, 16:37  [ТС] 4
В вашем случае вы делаете фильтр по группе условий, после чего выкатываете перечень всего, что Вам нужно, а это не совсем то, что меня интересует. Если как то проецировать это на Вашей базе, то мне нужен отчет в котором будет несколько граф, типа "структурных подразделений" и "номеров", а напротив них - общее количество, правда в моем случае все усложнено тем, что на каждый такой счетчик, мне необходимо накладывать ряд фильтров.

Из примеров того, что предстоит реализовать: Отчет, который показывает сколько больных поступило в этом месяце, сколько из них было принято в конкретные отделения, у скольких из них были выявлены определенные патологии.
0
Модератор
Эксперт MS Access
3613 / 2066 / 508
Регистрация: 12.06.2016
Сообщений: 5,283
08.04.2021, 16:47 5
Цитата Сообщение от MortyMels Посмотреть сообщение
Отчет, который показывает сколько больных поступило в этом месяце, сколько из них было принято в конкретные отделения, у скольких из них были выявлены определенные патологии.
Это несложно.
Одним запросом можно получить.

Правда, зависит от того, как спроектирована БД.
0
Модератор
Эксперт MS Access
3613 / 2066 / 508
Регистрация: 12.06.2016
Сообщений: 5,283
08.04.2021, 16:50 6
Цитата Сообщение от MortyMels Посмотреть сообщение
как сделать меньше, чем аксес предлагает стандартно
Формулировка вопроса туманна.

Что должно стать меньше?
Что, по-вашему, Access предлагает стандартно?
0
Модератор
Эксперт MS Access
10301 / 4208 / 684
Регистрация: 07.08.2010
Сообщений: 11,893
Записей в блоге: 4
08.04.2021, 18:26 7
Цитата Сообщение от MortyMels Посмотреть сообщение
Отчет, который показывает сколько больных поступило в этом месяце, сколько из них было принято в конкретные отделения, у скольких из них были выявлены определенные патологии.
некоторое время назад была тема - отчет за период ...... по лечебному учреждению ..... , который формировался несколькими сотнями запросов, хотя ее можно было сделать весьма компактным(2-3 запроса), применив динамический выбор по периоду, учреждению, даже врачу
Миниатюры
Коротко об отчетах, или как сделать меньше, чем аксес предлагает стандартно?  
0
Модератор
Эксперт MS Access
3613 / 2066 / 508
Регистрация: 12.06.2016
Сообщений: 5,283
08.04.2021, 18:30 8
Цитата Сообщение от shanemac51 Посмотреть сообщение
формировался несколькими сотнями запросов
Ужас какой.

Ничего не преувеличиваете?
0
Модератор
Эксперт MS Access
10301 / 4208 / 684
Регистрация: 07.08.2010
Сообщений: 11,893
Записей в блоге: 4
08.04.2021, 18:41 9
Цитата Сообщение от Capi Посмотреть сообщение
Ничего не преувеличиваете?
ни чуть, даже преуменьшила
отчет в виде 2 форм со свободными полями, 20 итогов на строку стат формы, строк порядка 70-80
на каждую ячейку в коде прописано подсчет количества, суммарный код 600-800к на отчет

причем отчеты на 1,2,3,4 квартал , 1,2 полугодия, год отдельными формами

еще несколько мелких(на 4 итога по строке) - я была в трансе, когда увидела

Добавлено через 1 минуту
формировался несколькими сотнями запросов
видела и запросами по задаче ПРОВОДКИ, особо в нее не вникала,1600 запросов
0
Модератор
Эксперт MS Access
3613 / 2066 / 508
Регистрация: 12.06.2016
Сообщений: 5,283
08.04.2021, 18:42 10
Кстати, на скрине вижу не отчет, а форму.

Хотя это не делает рассказ о сотнях запросов менее фантастическим.
0
Модератор
Эксперт MS Access
3613 / 2066 / 508
Регистрация: 12.06.2016
Сообщений: 5,283
08.04.2021, 18:47 11
Цитата Сообщение от shanemac51 Посмотреть сообщение
суммарный код 600-800к на отчет
600-800к, к - это что за единица измерения, а килобайтах, что ли?

Меньше мегабайта получается.
0
Модератор
Эксперт MS Access
10301 / 4208 / 684
Регистрация: 07.08.2010
Сообщений: 11,893
Записей в блоге: 4
08.04.2021, 20:12 12
Цитата Сообщение от Capi Посмотреть сообщение
Меньше мегабайта получается.
на 1 (один) отчет, а отчетов около 10 + более мелкие
итого база около 30мб, хотя основная таблица 400 записей
0
Модератор
Эксперт MS Access
3613 / 2066 / 508
Регистрация: 12.06.2016
Сообщений: 5,283
09.04.2021, 01:24 13
Цитата Сообщение от shanemac51 Посмотреть сообщение
основная таблица 400 записей
Это БД персонифицированного учета?
По количеству записей не очень похоже (маловато).
Тем более, что рассматриваются все нозологии.

Цитата Сообщение от shanemac51 Посмотреть сообщение
отчет ...формировался несколькими сотнями запросов
Цитата Сообщение от shanemac51 Посмотреть сообщение
20 итогов на строку стат формы, строк порядка 70-80
на каждую ячейку в коде прописано подсчет количества, суммарный код 600-800к на отчет
Как-то одно с другим не вяжется.
Либо сотнями запросов, либо сотнями тысяч байт кода (получается, что на каждое поле ≈ 8 ÷ 10 строк кода).
И хотя и то, и другое - дичь, но зачем и то, и другое одновременно?
0
Модератор
Эксперт MS Access
10301 / 4208 / 684
Регистрация: 07.08.2010
Сообщений: 11,893
Записей в блоге: 4
09.04.2021, 06:35 14
Цитата Сообщение от Capi Посмотреть сообщение
Либо сотнями запросов, либо сотнями тысяч байт кода
я имела в виду - сотни обращений к таблицам для получения значения для каждого поля, в коде объявлено 600+ RecordSet

вот примерный код для 1-го поля, полей примерно 660 на отчет(630 символов на поле) - не сохранила оригинала
Visual Basic
1
2
3
4
5
6
7
8
9
10
im rst179 as dao.recordset
 
set rst179 = correntdb.openrecordset("SELECT [исходные данные].Пол FROM [исходные данные]   WHERE ((([исходные данные].Пол)=1) AND (([исходные данные].[Дата получ_ данных]) Between #1/1/2015# And #6/30/2015#) AND ((Asc([Шифр])) Between 75 And 75) AND ((Right(Left([Шифр],3),2)) Between 0 And 93) AND (([исходные данные].[Место смерти])=2) AND (([исходные данные].Обслуживание)=1) AND (([исходные данные].Возраст)>=15 And ([исходные данные].Возраст)<18));")
 
If rst179.RecordCount <> 0 Then
    rst179.MoveLast
    Поле179 = rst179.RecordCount
    Else: Поле179 = ""
End If
set rst179=nothing
для наглядности разбивка по строкам(синтаксис не исправляла)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
dim rst179 as dao.recordset
 
set rst179 = correntdb.openrecordset("SELECT [исходные данные].Пол
 FROM [исходные данные]
 WHERE ((([исходные данные].Пол)=1)
 AND (([исходные данные].[Дата получ_ данных]) Between #1/1/2015# And #6/30/2015#)
 AND ((Asc([Шифр])) Between 75 And 75)
 AND ((Right(Left([Шифр],3),2)) Between 0 And 93)
 AND (([исходные данные].[Место смерти])=2)
 AND (([исходные данные].Обслуживание)=1)
 AND (([исходные данные].Возраст)>=15 And ([исходные данные].Возраст)<18));")
 
If rst179.RecordCount <> 0 Then
    rst179.MoveLast
    Поле179 = rst179.RecordCount
    Else: Поле179 = ""
End If
set rst179=nothing
0
Модератор
Эксперт MS Access
3613 / 2066 / 508
Регистрация: 12.06.2016
Сообщений: 5,283
09.04.2021, 10:48 15
Цитата Сообщение от shanemac51 Посмотреть сообщение
полей примерно 660 на отчет
Это уже больше похоже на правду.

А то пишете "20 итогов на строку стат формы, строк порядка 70-80".
Это что ж, 1600 текстбоксов в форме?
При ограничении не более 754 контролов.

В общем, сначала приврали Вы изрядно.
Но это, видимо, как Охотничьи рассказы, там без приукрашивания никак.

А код оригинальный.
Очень.
Мягко говоря.

Только ТС не надо было этого показывать, а то еще возьмет за образец...
0
Модератор
Эксперт MS Access
10301 / 4208 / 684
Регистрация: 07.08.2010
Сообщений: 11,893
Записей в блоге: 4
09.04.2021, 12:04 16
Цитата Сообщение от Capi Посмотреть сообщение
Это что ж, 1600 текстбоксов в форме?
отчет поделен на 2 части, лист1 и лист2 , по 700+ контролов на листе

Добавлено через 2 минуты
Цитата Сообщение от Capi Посмотреть сообщение
В общем, сначала приврали Вы изрядно
я не приврала, просто вольное изложение реализации задачи, уж прошло более 5 лет
сама база в архиве не сохранилась(в исходном виде имею ввиду), только с моими попытками уменьшить код и удалены по 500 контролов с листа, что бы устойчивее открывалась в конструкторе
0
0 / 0 / 0
Регистрация: 08.04.2021
Сообщений: 11
09.04.2021, 16:13  [ТС] 17
Немного разобрался как аксес формирует формы) На основе запроса сформировал отчет, и даже получилось вывести первые результаты, вводом в данные инпута "=Count(IIf([Интересующая графа]="интересующее значение";Истина))", но возникает одна ошибка которая не дает покоя...

Ввожу в поле формулу "=Count(IIf([Сопутствующая патология]=9;Истина))", а он в ответ
"Поле "[Сопутствующая патология]", одновременно допускающее несколько значений, недопустимо в выражении "Iif([Сопутствующая патология])=9,true)"
Можно ли как то проверить поле на наличие поля с номером 9?
0
Эксперт MS Access
6765 / 4356 / 276
Регистрация: 12.08.2011
Сообщений: 12,850
10.04.2021, 07:19 18
Цитата Сообщение от MortyMels Посмотреть сообщение
Поле "[Сопутствующая патология]", одновременно допускающее несколько значений, недопустимо в выражении
И правильно пишет. Поля подстановки из таблиц в мусорку!
0
Модератор
Эксперт MS Access
3613 / 2066 / 508
Регистрация: 12.06.2016
Сообщений: 5,283
10.04.2021, 11:42 19
Цитата Сообщение от alvk Посмотреть сообщение
Цитата Сообщение от MortyMels Посмотреть сообщение
Поле ...одновременно допускающее несколько значений, недопустимо в выражении
Поля подстановки из таблиц в мусорку!
Там многозначное поле, а не поле подстановки.
0
8362 / 4164 / 959
Регистрация: 05.10.2016
Сообщений: 11,489
Записей в блоге: 1
10.04.2021, 12:59 20
Лучший ответ Сообщение было отмечено MortyMels как решение

Решение

Цитата Сообщение от MortyMels Посмотреть сообщение
Ввожу в поле формулу "=Count(IIf([Сопутствующая патология]=9;Истина))", а он в ответ
Не совсем понятно что вы хотите в результате данной формулы, обращаясь к элементу управления с "мультиселектом".
Список своих значений он хранит в свойстве Value
Например, если в запросе написать:
SQL
1
... WHERE ([Сопутствующая патология].Value="9")
будут выведены записи содержащие "9" как одно из значений поля "[Сопутствующая патология]"

в фильтре это так:
Visual Basic
1
2
3
4
Dim sVal$
    sVal = "[Сопутствующая патология].Value='9'"
    Me.Filter = sVal
    Me.FilterOn = True
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2021, 12:59

Межстрочный интервал меньше чем 1,0 можно сделать?
здравствуйте, собственно сабж, как?

В чём ошибка или подскажите как сделать правильно
Составить программу вычисления произведения целых чисел, кратных 3, в интервале от 30 до 150. ...

Как или чем сделать дефрагментацию папок в NTFS?
Сколько программ не пробовал в WinXP, все дефрагментируют только файлы. А информация о папках,...

Проверить, больше число или меньше чем 15% от другого числа
Всем привет. Допустим у нас есть число 100, мне надо вычислить 15% от допустим 50, и проверить, 100...

Чем конвертировать базу АКСЕС в ФАЄРБЕРД ???
Киньте кто ссылку на такой конвертер, а то я ничего рабочего найти не могу:scratch:

Писать сервис на мобильные платформы стандартно (нативно, под каждую отдельно) или Qt/C++ (кросплатформенно)?
Друзья, хэлп! Ведём переговоры с разными командами разработчиков. Встали перед сложным выбором....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.