powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт отчетов в несколько файлов
20 сообщений из 20, страница 1 из 1
Экспорт отчетов в несколько файлов
    #39156732
ironmind1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

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

Задача:
Нужно 1-им нажатием кнопки экспортировать отчет, который формируется на основании выбранного элемента в форме (1 запись из списка) в формате ПДФ с именем выбранного элемента и так нужно сделать циклично, использую все предлагаемые элементы в форме

Для наглядности в paint нарисовал схему.
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39156837
Используйте DoCmd.OutputTo
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39156845
ironmind1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

А можно более конкретный пример? Я попытался сделать на основании имеющегося примера на форуме, но у меня не вышло...
Вот что я пробовал:
Private Sub блабла231_Click()
DoCmd.OutputTo acOutputReport, "имя отчета", acFormatPDF, Forms!имя_формы!поле & ".pdf", True
End Sub

я слаб в ВБ =(
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39157457
ironmind1000но у меня не вышло... Что именно не вышло. Какая ошибка?
Что у вас в Forms!имя_формы!поле? Покажите пример.
У вас какой офис? До А2007 формат PDF не поддерживался.
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39157485
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ironmind1000,

у нас отчёты "цикличено" открываются, заганяются в аттачмент и посылаются мылом. Всё это происходит в Acc2003 при помощи PDFCreator'a. Вот такой вот код

Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
Public Function CreateAttachments(PS_report_name As String, PS_PDFreport_name As String, PS_Criteria As String, PS_type As String) As String

Dim objPDFCreator
Dim DefaultPrinter      As String
Dim c                   As Long
Dim OutputFilename      As String
Dim LS_Path             As String
Dim LI_counter          As Integer          'JFL 2008-06-25
Dim LI_REPEATING_LIMIT  As Integer          'JFL 2008-06-26


LS_Path = "C:\Temp\"
LI_counter = 0
LI_REPEATING_LIMIT = 3
If Trim(PS_PDFreport_name = "") Then PS_PDFreport_name = PS_report_name

Recall:                                                                 'JFL 2008-03-04
    Set objPDFCreator = CreateObject("PDFCreator.clsPDFCreator")
    
    'set PDFCreator
    With objPDFCreator
        .cStart "/NoProcessingAtStartup"
        .cOption("UseAutosave") = 1
        .cOption("UseAutosaveDirectory") = 1
        .cOption("AutosaveDirectory") = LS_Path
        .cOption("AutosaveFilename") = PS_PDFreport_name
        .cOption("AutosaveFormat") = 0                            ' 0 = PDF
        DefaultPrinter = .cDefaultPrinter
        .cDefaultPrinter = "PDFCreator"
        .cClearCache
        If .cDefaultPrinter = "PDFCreator" Then                     'JFL 2008-02-25
            'If Application.Printer.DeviceName = "PDFCreator" Then
                DoCmd.OpenReport PS_report_name, acNormal, , PS_Criteria
            'End If
        Else
            objPDFCreator.cClose                                        'JFL 2008-03-04
            Set objPDFCreator = Nothing                                 'JFL 2008-03-04
            GoTo Recall                                                 'JFL 2008-03-04
        End If
        .cPrinterStop = False
    End With

    'waiting
    c = 0
        Do While (objPDFCreator.cOutputFilename = "") And (c < (maxTime * 1000 / sleepTime))
            c = c + 1
            Sleep 200
        Loop

    OutputFilename = objPDFCreator.cOutputFilename

    'before closing PDFCreator wait for finished printing
    Dim LI_result           As Integer
    Do Until objPDFCreator.cCountOfPrintjobs = 0
        LI_result = DoEvents
    Loop

    'default printer set back
    With objPDFCreator
        .cDefaultPrinter = DefaultPrinter
        Sleep 200
        .cClose
    End With

    'wait until PDFCreator is removed from memory
    Sleep 2000

    'control about output file name
    If OutputFilename = "" Then
        If LI_counter > LI_REPEATING_LIMIT Then
            Call InsertInformationToSQL(DLookup("[inv_id]", "[RE_S_PAY_edit_bank_transfer2]", PS_Criteria), 1, Now(), PS_type & "Error: Time is up ! <" & LI_counter & ">")        'JFL 2007-12-11
            CreateAttachments = ""
        Else
            LI_counter = LI_counter + 1
            Set objPDFCreator = Nothing
            GoTo Recall
        End If
    Else
        CreateAttachments = LS_Path & PS_PDFreport_name & ".pdf"
    End If
    
    Set objPDFCreator = Nothing

    If Not ExistFile(LS_Path & PS_PDFreport_name & ".pdf") Then
        If LI_counter > LI_REPEATING_LIMIT + 1 Then
            Set objPDFCreator = Nothing
            CreateAttachments = "ERR"
            Call InsertInformationToSQL(DLookup("[inv_id]", "[RE_S_PAY_edit_bank_transfer2]", PS_Criteria), 1, Now(), PS_type & "Error: The file does not exist! <" & LI_counter & ">")
            MsgBox "[MO_SEM_Send_email][CreateAttachments] Chyba pri vytv&#225;&#248;en&#237; pdf dokumentu - Soubor nevytvo&#248;en !", vbExclamation, "Soubor neexistuje"
            Exit Function
        Else
            LI_counter = LI_counter + 1
            Set objPDFCreator = Nothing
            Call killProcess("PDFCreator.exe")
            GoTo Recall
        End If
    Else
        If Not FileValidation(PS_report_name, PS_PDFreport_name, LS_Path) Then
            If LI_counter > LI_REPEATING_LIMIT + 1 Then
                CreateAttachments = "ERR"
                Call InsertInformationToSQL(DLookup("[inv_id]", "[RE_S_PAY_edit_bank_transfer2]", PS_Criteria), 1, Now(), PS_type & "Error: The file contains wrong report! <" & LI_counter & ">")        'JFL 2007-06-26
                Exit Function
            Else
                LI_counter = LI_counter + 1
                Set objPDFCreator = Nothing
                GoTo Recall
            End If
        End If
    End If

Exit Function

errorMessage:
    MsgBox Err.Description & " / " & Err.Number, vbInformation
    
    'set default printer to origin value
    If objPDFCreator.cDefaultPrinter = "PDFCreator" And Trim(DefaultPrinter) <> "" Then
        With objPDFCreator
            .cDefaultPrinter = DefaultPrinter
            Sleep 200
            .cClose
        End With
    End If
    
    Set objPDFCreator = Nothing
    
    CreateAttachments = "ERR"
    MsgBox "chyba pri odesl&#225;n&#237; emailu - CreateAttachment()", vbInformation

End Function


...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39157691
ironmind1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

Ошибка 2059, не удается найти объект "|1"
Пример во вложении.
Офис 2010.
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39157692
ironmind1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шыфл,

Да уж... надо учить ВБА )))) вообще ничего в этом коде не понятно... =(((
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158276
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ironmind1000,

так ты спрашивай, что не понятно - поясню. Там много лишнего с твоей точки зрения. Основное это до Set objPDFCreator = Nothing - там создаётся файл PDF из отчёта PS_report_name , который сохраняется в папку LS_Path = "C:\Temp\" под именем .cOption("AutosaveFilename") = PS_PDFreport_name . Репорт посылается на печать, и результат сохраняется в файл - всё просто
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158294
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ironmind1000Анатолий ( Киев ),

Ошибка 2059, не удается найти объект "|1"
Пример во вложении.
Офис 2010.

http://www.sql.ru/forum/actualfile.aspx?id=18741194] Приложенный файл (Тест.zip - 79Kb)

Код: vbnet
1.
2.
3.
Private Sub Кнопка12_Click()
DoCmd.OutputTo acOutputReport, "1", acFormatPDF, Forms!список!Название_машин & ".pdf", True
End Sub



не находит отчет с именем "1"
а в остальном работает
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158307
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шыфлironmind1000,

так ты спрашивай, что не понятно - поясню. Там много лишнего с твоей точки зрения. Основное это до Set objPDFCreator = Nothing - там создаётся файл PDF из отчёта PS_report_name , который сохраняется в папку LS_Path = "C:\Temp\" под именем .cOption("AutosaveFilename") = PS_PDFreport_name . Репорт посылается на печать, и результат сохраняется в файл - всё просто

Код: 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.
27.
28.
'' не присвоены значения переменным и не приложены функции
''''''''''--------------код типа демо---------------
''Dim maxtime, sleepTime
''maxtime = 1000
''sleepTime = 1000

Sub sleep(n1z)

End Sub
Sub InsertInformationToSQL(n1z, n2z, n3z, n4z)
 'Call InsertInformationToSQL(
 'DLookup("[inv_id]", "[RE_S_PAY_edit_bank_transfer2]", PS_Criteria),
 '1,
 'Now(),
 'PS_type & "Error: Time is up ! <" & LI_counter & ">")
 
 'JFL 2007-12-11
            
End Sub
Function ExistFile(n1z)

End Function
Sub killProcess(n1z)

End Sub
Function FileValidation(n1z, n2z, n3z)

End Function
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158318
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const maxTime = 10    ' in seconds
Private Const sleepTime = 250 ' in milliseconds

Public Function ExistFile(fileName As String) As Boolean
   'this function returns boolean: true = the file exists, false = the file doesn't exist
   'Dim objFile         As Object 
   'Set objFile = CreateObject("Scripting.FileSystemObject")
   'If objFile.FileExists(fileName) Then
   If Nz(Dir(fileName), "") <> "" Then 
       ExistFile = True
   Else
       ExistFile = False
   End If
End Function


Function killProcess(ProcessName As String)
    Dim KillString  As String
    KillString = "taskkill /F /IM " & ProcessName
    Call Shell(KillString, vbHide)
    'killProcess = Shell(KillString, vbHide)
End Function


InsertInformationToSQL и FileValidation - это из области внутренней логики, не существенно
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158426
ironmind1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

Да, но он не сохраняет, а тупо открывает... где прописать путь сохранения? и как сделать циклично, что бы данное сохранение осуществилось с именем выбранных элементов?
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158434
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ironmind1000,

Я пока не пробовала Шифла
другой же сохраняет в фиксированный каталог

хотя может получится

Private Sub Кнопка12_Click()
DoCmd.OutputTo acOutputReport, "1", acFormatPDF, "c:\temp\" & Forms!список!Название_машин & ".pdf", True
End Sub
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158439
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ironmind1000,

без открытия
Код: vbnet
1.
2.
3.
4.
Private Sub Кнопка12_Click()
DoCmd.OutputTo acOutputReport, "1", acFormatPDF, "c:\temp\" & Forms!список!Название_машин & ".pdf", False

End Sub
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158467
ironmind1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

Я уже разобрался с сохранением, остался один вопрос как сделать сохранение универсальным, типа что бы с любого компа можно было открыть и автоматом создавал папку на раб столе и сохранял все файлы там... И как сделать сохранение по всему списку... открывая каждый отчет в соответствии с выбранным элементом.. =)
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158472
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ironmind1000,

обычную папку я создавала через MKDIR
на рабочем столе не создавала, но вопросы по этой теме видела........ищите
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158476
ironmind1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

Хорошо, спасибо =)
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158477
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ironmind1000И как сделать сохранение по всему списку... открывая каждый отчет в соответствии с выбранным элементом.. =)
это не проблема --напишите небольшой модуль на VBA
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158497
ironmind1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

в этом то и проблема, я не знаю ВБА =(((( Ладно, все равно спасибо, попробую решить проблему самостоятельно... Часть уже решена... теперь осталось придумать как простыми способами использовать этот код... =(
...
Рейтинг: 0 / 0
Экспорт отчетов в несколько файлов
    #39158539
ironmind1000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если вдруг кому интересно сделал следующим образом:
Написал код на запись (при получении фокуса):
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт отчетов в несколько файлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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