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

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

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

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

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

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

В общем, подскажите, плиз, как сделать поле в только что созданном отчёте?
...
Рейтинг: 0 / 0
09.03.2006, 17:08
    #33590568
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчёта при помощи VBA
скажите, а где вы взяли 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
09.03.2006, 17:32
    #33590663
Veta_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчёта при помощи VBA
так имя-то отчёту всё равно автоматически не присваивается. Он остаётся открытым в режиме конструктора с именем Отчёт1 или там Отчёт2, и закрывать его приходится вручную, и имя вручную задавать...
...
Рейтинг: 0 / 0
09.03.2006, 17:35
    #33590669
Veta_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчёта при помощи VBA
То есть сорри, можно закрывать отчёт методом Close, но имя для сохранения всё равно приходится вручную указывать
...
Рейтинг: 0 / 0
09.03.2006, 17:41
    #33590694
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчёта при помощи VBA
Код: plaintext
Set ctlText = CreateControl(frm.Name,

чувствуете?
...
Рейтинг: 0 / 0
09.03.2006, 17:51
    #33590732
Veta_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчёта при помощи VBA
Ага, с этим уже понятно! Но вот присвоение имени отчёта не вручную.... Что здесь-то делать?
...
Рейтинг: 0 / 0
09.03.2006, 19:34
    #33591002
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчёта при помощи VBA
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
10.03.2006, 10:39
    #33591877
Олег Щербина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчёта при помощи VBA
Во вложении файл - модуль из действующей программы.
Отчет из динамического количества колонок
Уже несколько лет работает.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
30.07.2019, 20:11
    #39843156
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание отчёта при помощи VBA
делал на скорую руку-есть мелькание-побеждайте его сами-в остальном вроде так как просили(недостаток-фиксированное число строк на странице(если по размеру страницы посложнее будет):
Код: 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
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Создание отчёта при помощи VBA / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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