powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание отчёта при помощи VBA
9 сообщений из 9, страница 1 из 1
Создание отчёта при помощи VBA
    #33590521
Veta_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема вот какая: надо создавать отчёт динамически, по нажатию кнопки в форме. Делаю вот так:

Set rpt = CreateReport
rpt.RecordSource = "Абсолютные данные для вывода"
rpt.Caption = "Абсолютные данные для вывода"

После этого в отчёте надо создать поле. Делаю:

Set ctlText = CreateReportControl("Абсолютные данные для вывода", acTextBox, , , "1", 100, 100)

Естественно, выдаётся ошибка, что отчёт с таким именем не существует. Задаю имя
rpt.Name = "Абсолютные данные для вывода" - ошибка, свойство Name доступно только для просмотра

Сохранить
DoCmd.Save acReport, "Абсолютные данные для вывода"
не получается, "Объект не открыт"

В общем, подскажите, плиз, как сделать поле в только что созданном отчёте?
...
Рейтинг: 0 / 0
Создание отчёта при помощи VBA
    #33590568
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скажите, а где вы взяли CreateReport, елси не жали Ф1?

а если жали Ф1, почему не нажать ее на CreateControl?

справка:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
The following example first creates a new form based on an Orders table. It then uses the CreateControl method to create a text box control and an attached label control on the form.

Sub NewControls()
    Dim frm As Form
    Dim ctlLabel As Control, ctlText As Control
    Dim intDataX As Integer, intDataY As Integer
    Dim intLabelX As Integer, intLabelY As Integer

    ' Create new form with Orders table as its record source.
    Set frm = CreateForm
    frm.RecordSource = "Orders"
    ' Set positioning values for new controls.
    intLabelX =  100 
    intLabelY =  100 
    intDataX =  1000 
    intDataY =  100 
    ' Create unbound default-size text box in detail section.
    Set ctlText = CreateControl(frm.Name, acTextBox, , "", "", _
        intDataX, intDataY)
    ' Create child label control for text box.
    Set ctlLabel = CreateControl(frm.Name, acLabel, , _
         ctlText.Name, "NewLabel", intLabelX, intLabelY)
    ' Restore form.
    DoCmd.Restore
End Sub
...
Рейтинг: 0 / 0
Создание отчёта при помощи VBA
    #33590663
Veta_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так имя-то отчёту всё равно автоматически не присваивается. Он остаётся открытым в режиме конструктора с именем Отчёт1 или там Отчёт2, и закрывать его приходится вручную, и имя вручную задавать...
...
Рейтинг: 0 / 0
Создание отчёта при помощи VBA
    #33590669
Veta_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть сорри, можно закрывать отчёт методом Close, но имя для сохранения всё равно приходится вручную указывать
...
Рейтинг: 0 / 0
Создание отчёта при помощи VBA
    #33590694
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Set ctlText = CreateControl(frm.Name,

чувствуете?
...
Рейтинг: 0 / 0
Создание отчёта при помощи VBA
    #33590732
Veta_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага, с этим уже понятно! Но вот присвоение имени отчёта не вручную.... Что здесь-то делать?
...
Рейтинг: 0 / 0
Создание отчёта при помощи VBA
    #33591002
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Veta_sАга, с этим уже понятно! Но вот присвоение имени отчёта не вручную.... Что здесь-то делать?

Закрыли с сохранением, потом переименовали ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    Dim tmpName As String,
    Dim rpt As Object

    Set rpt = Application.CreateReport
    tmpName = rpt.Name
...
    DoCmd.Close acReport, rpt.Name, acSaveYes
    DoCmd.Rename otherName, acReport, tmpName
...
Рейтинг: 0 / 0
Создание отчёта при помощи VBA
    #33591877
Олег Щербина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во вложении файл - модуль из действующей программы.
Отчет из динамического количества колонок
Уже несколько лет работает.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Создание отчёта при помощи VBA
    #39843156
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делал на скорую руку-есть мелькание-побеждайте его сами-в остальном вроде так как просили(недостаток-фиксированное число строк на странице(если по размеру страницы посложнее будет):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Private Sub Кнопка0_Click() 'tbl-источник для отчета  таблица
Dim rs As Recordset, rs1 As Recordset, i, j, jj, mycount
CurrentDb.Execute "CREATE TABLE vr (ctl byte, ctl1 TEXT)" 'вр.таблица с нужными Вам полями в отчете
Set rs = CurrentDb.OpenRecordset("tbl") 'или SELECT с нужной сортировкой для отчета tbl-хранимого в БД
Set rs1 = CurrentDb.OpenRecordset("vr") ' временная таблица заполняемая пронумерованными записями которые отсортированы как надо
i = 1
Do Until rs.EOF  'заполнение временной таблицы
rs1.AddNew
rs1!ctl = i
rs1!ctl1 = rs!dogovor
rs1.Update
i = i + 1
rs.MoveNext
Loop
mycount = rs1.RecordCount \ 20  'число страниц с 20 строками
For i = 0 To mycount
j = (i * 20) + 1
jj = j + 20 'эти числа,равные между собой определяют число строк на странице
DoCmd.OpenReport "VR", acViewPreview, , "ctl>=" & j & " and ctl<" & jj, acHidden
       'отчет "VR" должен быть создан и сохранен в базе.Его источник таблица "VR"(закомментируете все после Execute,создадите отчет,удалите таблицу VR,раскоментируете. Обновить окно БД(область переходов)-фокус туда и F5
DoCmd.OutputTo acOutputReport, "VR", acFormatRTF, "D:\" & i + 1 & ".rtf"
        'создание файла с именем № страницы (добавьте число)-короче как хотите
DoCmd.Close acReport, "VR" 'закрытие отчета VR
Next 'цикл выполняется столько раз сколько страниц в отчете и создается столько же файлов
DoCmd.DeleteObject acTable, "VR" 'удаление таблицы VR
End Sub
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание отчёта при помощи VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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