powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вывод для каждой записи запроса отдельно PDF файл
8 сообщений из 8, страница 1 из 1
Вывод для каждой записи запроса отдельно PDF файл
    #39988584
Tishh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует отчет "PDF_rep" с запросом "PDF_rep_q" (допустим имеет 10 записей). Хочу вывести в PDF не 10 страничный отчет в 1 файл, а вывести для каждой записи "id_pat" собственный отчет и таким образом должно получиться 10 файлов.
Не могли бы вы помочь мне разобраться в том, как исправить ошибку в коде?

Не нравится запись:
Код: sql
1.
Set rs = q.OpenRecordset()


Дает ошибку:
авторRunTime Error 3061
Too few parameters. Expected 3


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub cmd_pdf_Click()
Dim t As String
t = 1
Dim q As DAO.QueryDef
Dim rs As DAO.Recordset
  Set q = CurrentDb.QueryDefs("PDF_rep_q")
  Set rs = q.OpenRecordset()
  Do While Not rs.EOF
     rs.Edit
     DoCmd.OpenReport "PDF_rep", acViewPreview, , "[id_pat]=" & rs!id_pat
        DoCmd.OutputTo acOutputReport, "PDF_rep", "PDFFormat(*.pdf)", _
        "D:\PDF\" & t & ".pdf", False, "", , acExportQualityPrint
                        DoCmd.close acReport, "PDF_rep"
  t = t + 1
   rs.MoveNext
Loop
rs.close
q.close: Set q = Nothing
End Sub
...
Рейтинг: 0 / 0
Вывод для каждой записи запроса отдельно PDF файл
    #39988588
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)Зачем в цикле rs.edit?
2) нижеприведенный код к этой ошибке отношения не имеет. Имеет - PDF_rep_q - давайте его сюда
...
Рейтинг: 0 / 0
Вывод для каждой записи запроса отдельно PDF файл
    #39988592
Tishh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запрос "PDF_rep_q"

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT patients.id_pat, 
patients.lab_num, 
patients.date_in, 
patients.familia, 
patients.id_organization, 
patients.id_test, 
patients.otvet
FROM patients
WHERE (((patients.date_in) Between [Forms]![journal]![date_1] And [Forms]![journal]![date_2]) AND ((patients.id_organization)=[Forms]![journal]![cmb_organization]) 
AND ((patients.otvet) Is Not Null));
...
Рейтинг: 0 / 0
Вывод для каждой записи запроса отдельно PDF файл
    #39988598
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tishh
запрос "PDF_rep_q"
читаем пдо просветления - https://www.sql.ru/faq/faq_topic.aspx?fid=410
...
Рейтинг: 0 / 0
Вывод для каждой записи запроса отдельно PDF файл
    #39988741
Tishh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub cmd_pdf_Click()
Dim rs As DAO.Recordset
Dim t As String
Set rs = CurrentDb.OpenRecordset("SELECT patients.id_pat, patients.lab_num, patients.date_in, patients.familia, " _
    & "patients.id_organization, patients.id_test, patients.otvet" _
    & "FROM patients " _
    & "WHERE patients.id_organization=" & Forms!journal!cmb_organization & " And patients.otvet Is Not Null AND" _
    & " patients.date_in Between #" & Format(Forms!journal!date_1, "mm\/dd\/yyyy") & "# And #" _
    & Format(Forms!journal!date_2, "mm\/dd\/yyyy") & "#")
Do While Not rs.EOF
t = Format(rs!date_in, "dd\.mm\.yyyy") + "_" + [journal_subform].Form![id_organization].Column(1) + "_" + str(rs!lab_num) + "_" + rs!familia
     DoCmd.OpenReport "PDFG", acViewPreview, , "[id_patients]=" & rs!id_pat
        DoCmd.OutputTo acOutputReport, "PDFG", "PDFFormat(*.pdf)", _
        "D:\PDF\" & t & ".pdf", False, "", , acExportQualityPrint
                        DoCmd.close acReport, "PDFG"
   rs.MoveNext
Loop
rs.close
End Sub



Спасибо за помощь :)
...
Рейтинг: 0 / 0
Вывод для каждой записи запроса отдельно PDF файл
    #39988828
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tishh
Спасибо за помощь :)
согласен с комментарием из faq https://www.sql.ru/faq/faq_topic.aspx?fid=410 Если все параметры являются ссылками на контролы форм (Forms![ИмяФормы]![ИмяКонтрола]), тогда самое простое (и красивое) решение :
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim q As DAO.QueryDef, p As DAO.Parameter
  Set q = CurrentDb.QueryDefs("ИмяЗапроса") 'как обычного запроса Select,
  'так и INSERT/UPDATE; в запросах на удаление это не помогает
  For Each p In q.Parameters
    p.Value = Eval(p.Name)
  Next
  q.Execute
  q.close: Set q=Nothing

это гораздо лучше чем получилось у ТС
...
Рейтинг: 0 / 0
Вывод для каждой записи запроса отдельно PDF файл
    #39988829
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tishh
Код: sql
1.
Do While Not rs.EOF

и я бы поменял на лучше читаемое
Код: sql
1.
Do Until rs.EOF
...
Рейтинг: 0 / 0
Вывод для каждой записи запроса отдельно PDF файл
    #39988831
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tishh
Код: sql
1.
t = Format(rs!date_in, "dd\.mm\.yyyy") + "_" + [journal_subform].Form![id_organization].Column(1) + "_" + str(rs!lab_num) + "_" + rs!familia

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


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