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

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

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

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

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

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

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

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
18.03.2018, 17:54
    #39616510
MSerg1968-S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правка отчета из VBA
ПЕНСИОНЕРКА,
Я нашел!
Способ как у меня, сначала делаю отчет, чистый, с полями. Потом в коде формирую источник записи отчета, а потом этим полям быстро, в режиме редактирования назначаю поля запросов. Делается бесхитростно так вот :

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
18.03.2018, 18:34
    #39616519
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правка отчета из VBA
MSerg1968-S, почитайте Гетца. он про форматирование отчетов хорошо написал. главка там небольшая.
Код: vbnet
1.
DoCmd.OpenReport ("MyReport"), acViewDesign


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

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

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


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

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

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

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

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

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

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

Отчет с нуля это интересно же! Можно повозиться, это того стоит. Разные бывают ситуации жизненные.
Мне вот к примеру легче было бы один отчет поматросить в коде процедуры и все. Потому что специализированных отчетов мне понадобится три минимум, а код от этого не облегчится, кнопка-то на форме одна. Либо кнопок лепить на форму, что перегрузит ее.
Это нормальный поиск баланса разумного компромисса, или отчеты плодить, или кнопки, или меньше кода и отчетов, но вот такие штуки.
Короче, если кто знает с ходу, подскажите пожалуйста, я конечно работаю, просто методом проб.
...
Рейтинг: 0 / 0
19.03.2018, 09:41
    #39616637
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правка отчета из VBA
MSerg1968-SМожно повозиться, это того стоит.Повозится можно (кому это нужно?), но оно этого не стоит.
Да и правильно тебе сказали выше, в среде RunTime у тебя этот фокус не прокатит. От слова "вообще".
...
Рейтинг: 0 / 0
19.03.2018, 09:50
    #39616646
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правка отчета из VBA
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
19.03.2018, 10:35
    #39616658
MSerg1968-S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правка отчета из VBA
ПЕНСИОНЕРКА,

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

Похоже на гениальный ход!
Надо обдумать!
Спасибо большое!
...
Рейтинг: 0 / 0
19.03.2018, 11:15
    #39616672
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правка отчета из VBA
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
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Правка отчета из VBA / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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