powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Правка отчета из VBA
17 сообщений из 17, страница 1 из 1
Правка отчета из VBA
    #39616117
MSerg1968-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте спецы в access!

Подскажите пожалуйста, как из VBA не только присваивать отчету recordsource, что я умею, но и назначать источники записей полям отчета?

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

Но я создаю чистое поле, а связывать его с данными хочу из VBA, т.к. к примеру источник данных отчета у меня динамически образуется с разными полями и я хочу на лету полю отчета присвоить то или иное поле источника отчета.
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616120
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MSerg1968-S,
например, так
18084327
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616125
MSerg1968-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport,

да, я уже подумал о том, чтобы среагировать на событие открытие отчета. Пример вроде наглядный, но где ADODB взять?
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616126
MSerg1968-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport,
так, ладно, нашел в references как всегда
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616143
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSerg1968-Sисточник данных отчета у меня динамически образуется с разными полями и я хочу на лету полю отчета присвоить то или иное поле источника отчета
для таких запросов(списков и перекрестных) обычно применяю НТМ-формат с печатью вордом или екселем

что надо
--написать нужный запрос
--сделать формочку с кнопками или списком для вызова стандартного модуля формирования(последнее время мне больше нравится список --можно задать права доступа для пользователей)
--полученный НТМ можно просмотреть/распечатать или в броузере или ворде или екселе

для 90% различных справок весьма удобен
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616509
MSerg1968-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
Я нашел!
Способ как у меня, сначала делаю отчет, чистый, с полями. Потом в коде формирую источник записи отчета, а потом этим полям быстро, в режиме редактирования назначаю поля запросов. Делается бесхитростно так вот :

DoCmd.OpenReport ("MyReport"), acViewDesign

Reports!MyReport.RecordSource = S1 ' в этой переменной зашит запрос типа Select.......

Reports!MyReport!LHeader.Caption = "Здесь пишу заголовок отчета"
Reports!MyReport!F1.ControlSource = F'
Reports!MyReport!F2.ControlSource = "Item"
Reports!MyReport!FPNum.ControlSource = "PNum"
Reports!MyReport!Fqt.ControlSource = "Qtv"
Reports!MyReport!FUnits.ControlSource = "units"


DoCmd.Close acReport, "MyReport", acSaveYes
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616510
MSerg1968-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
Я нашел!
Способ как у меня, сначала делаю отчет, чистый, с полями. Потом в коде формирую источник записи отчета, а потом этим полям быстро, в режиме редактирования назначаю поля запросов. Делается бесхитростно так вот :

DoCmd.OpenReport ("MyReport"), acViewDesign

Reports!MyReport.RecordSource = S1 ' в этой переменной зашит запрос типа Select.......

Reports!MyReport!LHeader.Caption = "Здесь пишу заголовок отчета"
Reports!MyReport!F2.ControlSource = "Item" 'а далее просто бегу по созданным пустышкам-полям и
Reports!MyReport!F3.ControlSource = "PNum" 'присваиваю им значения из запроса
Reports!MyReport!F4.ControlSource = "Qtv" 'который ранее сделал для источника данных. У меня S1

DoCmd.Close acReport, "MyReport", acSaveYes

еще нашел что можно скрывать поле, если для него не нашлось поля в запросе.
Reports!MyReport!FDate.Visible = False

Все отлично!
Но! Хочется дальше... Теперь хочется в этом отчете создать группу, которая в конструкторе отчетов делается одной кнопкой.
Но вот пока не знаю как, не нащупал.

Если есть подсказки, буду благодарен!
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616519
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSerg1968-S, почитайте Гетца. он про форматирование отчетов хорошо написал. главка там небольшая.
Код: vbnet
1.
DoCmd.OpenReport ("MyReport"), acViewDesign


в рабочей базе-если рантайм - этот режим не работает, а в обычной базе открывается окно редактора, например.
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616531
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSerg1968-SЯ нашел!Нет. Не нужен режим Design. Всё это делается в событии открытия отчёта ( Open ).
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616535
MSerg1968-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

отлично, но как? Я нашел вот так

dim g as variant
g = Reports.Application.CreateGroupLevel("Имя_Отчета", "Имя_поля_по_которому_группируем", True, False)


Эта конструкция работает в режиме DoCmd.OpenReport ("Имя_Отчета"), acViewDesign
Открыл отчет по кнопке с формы, смотрю, а там моя группа создалась. Хорошо!

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

кто-нибудь знает?
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616540
MSerg1968-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

чем обращаться-то в событии открытия отчета? Там все одинаково что и из модуля. Я не вижу разницы, выражение

g = Reports.Application.CreateGroupLevel("Имя_Отчета", "Имя_Поля", True, False) срабатывает и выглядит одинаково что в модуле, что в событии открытия отчета.

DeleteReportControl? так ведь группировка не имеет имени, как к ней обратиться?
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616556
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSerg1968-S CreateGroupLevel А, ты вон чего хочешь! А чего только уровни группировок? Не отчёт с нуля?

Совет - оставь этот "альпинизьм" и делай специализированные отчёты. Путнего ничего не получится, только время потеряешь (хотя...)
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616631
MSerg1968-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Отчет с нуля это интересно же! Можно повозиться, это того стоит. Разные бывают ситуации жизненные.
Мне вот к примеру легче было бы один отчет поматросить в коде процедуры и все. Потому что специализированных отчетов мне понадобится три минимум, а код от этого не облегчится, кнопка-то на форме одна. Либо кнопок лепить на форму, что перегрузит ее.
Это нормальный поиск баланса разумного компромисса, или отчеты плодить, или кнопки, или меньше кода и отчетов, но вот такие штуки.
Короче, если кто знает с ходу, подскажите пожалуйста, я конечно работаю, просто методом проб.
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616637
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSerg1968-SМожно повозиться, это того стоит.Повозится можно (кому это нужно?), но оно этого не стоит.
Да и правильно тебе сказали выше, в среде RunTime у тебя этот фокус не прокатит. От слова "вообще".
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616646
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSerg1968-SНо я создаю чистое поле, а связывать его с данными хочу из VBA, т.к. к примеру источник данных отчета у меня динамически образуется с разными полями и я хочу на лету полю отчета присвоить то или иное поле источника отчета.
а так не пробовали--через запрос

создайте рабочую таблицу , на нее сделайте отчет

и запросом записывайте в нее данные(варианты группировки)

insert into rab1(c1,c2,c3,n1,n2,n3,.....)
select klient,tover,period,kol,cena,summa

insert into rab1(c1,c2,c3,n1,n2,n3,.....)
select tover,klient,period,kol,cena,summa

insert into rab1(c1,c2,c3,n1,n2,n3,.....)
select period,tover,klient,kol,cena,summa

отчет 1, а в зависимости от порядка данных --разная выходная форма
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616658
MSerg1968-S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

А бабушка, похоже, дело говорит! Действительно, не создавать ли запрос типа SELECT Поле1 as F1, Поле2 as F2..... подставляя всякий раз под F1 и F2 разные поля из рабочей таблицы! А отчет можно заранее нарисовать с группировкой по F1 к примеру, и подставлять в него разные данные из рабочей таблицы через запрос! Тогда не надо и с группировкой мурыжиться

Похоже на гениальный ход!
Надо обдумать!
Спасибо большое!
...
Рейтинг: 0 / 0
Правка отчета из VBA
    #39616672
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSerg1968-S,

можно и без таблицы --запросами

select klient as c1,tover as c2,period as c3,kol as n1,cena as n2,summa as n3.....



отчет только передать надписи на шапке
делала через

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
''--в общем модуле
public type t1
c1 as string
c2 as string
c3 as string
n1 as string
n2 as string
n3 as string
csql as string
end type
public t10 as t1
 
''в форме
t10.csql="select klient  as c1,tover as c2,period as c3,kol as n1,cena as n2,summa as n3....."
t10.c1="наименование клиента"
....
docmd.openreport "имя"
''в отчете
private sub report_load()
me.c1.caption=t10.c1
....


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


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