powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Присвоение вводимого значения в имя файла экспорта pdf
14 сообщений из 14, страница 1 из 1
Присвоение вводимого значения в имя файла экспорта pdf
    #39503716
den4ik1987g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, нужна помощь проффов в vba.

Есть отчет rep_empty_find основанный на запросе select_empty_n, у которого есть условие "where (ВходнойКонтроль.[Приходный ордер])=[Введите приходный ордер])". То есть при запуске отчета спрашивается номер и по введеному номеру выдает нужный отчет.
Так же есть запрос select_empty, такой же как и select_empty_n, где выводятся все записи. Т.е. нет условия "where (ВходнойКонтроль.[Приходный ордер])=[Введите приходный ордер])".


Вытаскиваю отчет rep_empty_find в .pdf командой по кнопке

Private Sub Кнопка377_Click()

Dim DB As Database
Set DB = CurrentDb
Dim RS As Recordset
Dim FileName As String
Dim FilePath As String
Dim StrSQL As String
StrSQL = "select [Приходный ордер] from select_empty_n"

Set RS = DB.OpenRecordset(StrSQL, dbOpenDynaset)
'Set RS = DB.OpenRecordset("select_empty", dbOpenDynaset)

FileName = RS.Fields("[Приходный ордер]")
FilePath = "C:\" & FileName & ".pdf"
'FilePath = FileName & ".pdf"
DoCmd.OutputTo acOutputReport, "rep_empty_find", acFormatPDF, FilePath

End Sub

-----
Пишет что в строке "Set RS = DB.OpenRecordset(StrSQL, dbOpenDynaset)" слишком мало параметров.
Заменив строку "StrSQL = "select [Приходный ордер] from select_empty_n" "на "StrSQL = "select [Приходный ордер] from select_empty" ", сохраняется файл всегда с именем первого [Приходный ордер] из запроса select_empty.


ВОПРОС, как подтянуться вводимый номер в имя экспортируемого файла .pdf?
или может как задать имя из сформированного отчета??

Спасибо всем кто поможет, никак не могу найти похожей проблемы.
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39503813
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего дело в том, что в экспортируемых объектах Access не любит запросов параметров отбора.
Как я выкручивался из этой ситуации?
Привожу пример.
У меня отчёт зависел от номера квартала. В запросе было поле Quartal .
Я создавал глобальную переменную intQuartal
Код: vbnet
1.
   Public intQuartal As Integer

и глобальную функцию
Код: vbnet
1.
2.
3.
Public Function fnQurtal() As Integer
    fnQurtal = intQuartal
End Function 

в запросе прописывал эту функцию в качестве условия отбора
Код: vbnet
1.
2.
 
  SELECT * FROM tblNorma WHERE tblNorma.Quartal=fnQuartal()

Перед экспортом присваиваю переменной intQuartal нужное значение, а после делаю экспорт. Всё работает.
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39503817
den4ik1987gРебят, нужна помощь проффов в vba.

Есть отчет rep_empty_find основанный на запросе select_empty_n, у которого есть условие "where (ВходнойКонтроль.[Приходный ордер])=[Введите приходный ордер])". То есть при запуске отчета спрашивается номер и по введеному номеру выдает нужный отчет.
Так же есть запрос select_empty, такой же как и select_empty_n, где выводятся все записи. Т.е. нет условия "where (ВходнойКонтроль.[Приходный ордер])=[Введите приходный ордер])".


Вытаскиваю отчет rep_empty_find в .pdf командой по кнопке

Private Sub Кнопка377_Click()

Dim DB As Database
Set DB = CurrentDb
Dim RS As Recordset
Dim FileName As String
Dim FilePath As String
Dim StrSQL As String
StrSQL = "select [Приходный ордер] from select_empty_n"

Set RS = DB.OpenRecordset(StrSQL, dbOpenDynaset)
'Set RS = DB.OpenRecordset("select_empty", dbOpenDynaset)

FileName = RS.Fields("[Приходный ордер]")
FilePath = "C:\" & FileName & ".pdf"
'FilePath = FileName & ".pdf"
DoCmd.OutputTo acOutputReport, "rep_empty_find", acFormatPDF, FilePath

End Sub

-----
Пишет что в строке "Set RS = DB.OpenRecordset(StrSQL, dbOpenDynaset)" слишком мало параметров.
Заменив строку "StrSQL = "select [Приходный ордер] from select_empty_n" "на "StrSQL = "select [Приходный ордер] from select_empty" ", сохраняется файл всегда с именем первого [Приходный ордер] из запроса select_empty.


ВОПРОС, как подтянуться вводимый номер в имя экспортируемого файла .pdf?
или может как задать имя из сформированного отчета??

Спасибо всем кто поможет, никак не могу найти похожей проблемы.

В отличие от случая, когда вы открываете запрос напрямую из окна БД, метод DB.OpenRecordset для запроса с параметрами эти параметры не запрашивает, поэтому ваш [Введите приходный ордер] он воспринимает как обычное поле (которого там нет, о чем и сообщает).

Запрос с параметрами как рекордсет можно окрывать через метод OpenRecordset соответствующего объекта QueryDef, предварительно задав значения всех его Parameters (это смотрите в справке).

Однако.

Когда будет выполняться DoCmd.OutputTo, он же сам (еще раз) запросит этот параметр (т.е. повторно).
Помимо того, что нехорошо по два раза спрашивать одно и то же, тут есть возможность в этих двух случаях указать разные номера, что уже приведет к лаже.

Поэтому вашем случае, имхо, лучше сделать чуток иначе - написать функцию, которая вернет значение параметра [Приходный ордер], и использовать эту функцию и в условии в запросе, и для получения значения FileName в вашем коде.

В этой функции, при вызове для получения FileName, запросить диалогом (или взять из формы) нужное значение параметра [Приходный ордер], а при (повторном) вызове из запроса (уже не запрашивая) вернуть то, что ввели в первом вызове (запомнив значение в Static-переменной, например)
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39503897
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
den4ik1987g,
можно ещё так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub Кнопка377_Click()

Dim DB As Database
Set DB = CurrentDb
Dim RS As Recordset
Dim FileName As String
Dim FilePath As String
Dim StrSQL As String
Dim q As QueryDef
Set q = DB.QueryDefs("select_empty_n")
p = InputBox("Введите номер приходного ордера")
q.SQL = "select [Приходный ордер] from select_empty where (ВходнойКонтроль.[Приходный ордер])='" & p & "')"   ' или без одинарных  кавычек, если номер приходного ордера - число

Set RS = DB.OpenRecordset(StrSQL, dbOpenDynaset)

FileName = RS.Fields("[Приходный ордер]")
FilePath = "C:\" & FileName & ".pdf"
DoCmd.OutputTo acOutputReport, "rep_empty_find", acFormatPDF, FilePath

End Sub
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39503900
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
den4ik1987g,
fix
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub Кнопка377_Click()

Dim DB As Database
Set DB = CurrentDb
Dim RS As Recordset
Dim FileName As String
Dim FilePath As String
Dim StrSQL As String
Dim q As QueryDef
Set q = DB.QueryDefs("select_empty_n")
p = InputBox("Введите номер приходного ордера")
q.SQL = "select [Приходный ордер] from select_empty where (ВходнойКонтроль.[Приходный ордер])='" & p & ")'"
StrSQL = "select * from select_empty_n)"
Set RS = DB.OpenRecordset(StrSQL, dbOpenDynaset)

FileName = RS.Fields("[Приходный ордер]")
FilePath = "C:\" & FileName & ".pdf"
DoCmd.OutputTo acOutputReport, "rep_empty_find", acFormatPDF, FilePath

End Sub
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39503931
den4ik1987g, давайте с самого начала.
Откуда вы вызываете отчет и экспорт? Если из формы, то, может быть, в ней есть поле "Приходный ордер"? Тогда в запросе вместо [Введите приходный ордер] укажите Forms![Имя формы]![Приходный ордер]. Запрос будет выполняться молча, а номер ордера для имени файла берите из поля.
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39504375
den4ik1987g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

Вызов происходит по кнопке из формы, в этой форме кроме кучи кнопок никакой информации нет, т.е. о поле [Приходный ордер]. тоже нет инфы. Я понимаю что вы имели ввиду. Не так давно я сам до такой системы дошел в задаче http://www.sql.ru/forum/1267830/dobavit-otchet-v-stroku-tablicy-polya-vlozhenie-po-knopke?hl=

Тут к сожалению немного другая задача.
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39504378
den4ik1987g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport,

Не могу понять как переменная StrSQL связана с переменной p.

И почему выделена строку StrSQL = "select * from select_empty_n)" красным, типо ошибка в строке, пока соответственно никаких сдигов
Та же самая ошибка по этому коду, без скобки в StrSQL = "select * from select_empty_n)"
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39504379
den4ik1987g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, кстати забыл всех поблагодарить за отклики, тока сейчас полноценно добрался до инета.
Так и не узнав как решается задача, запушил на кнопку код, который формирует все файлы автоматически без ввода. Если надо будет выложу, просто это не в теме этой задачи.
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39504386
den4ik1987g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss,

Не могу понять чему присваивать переменную
В запросе заменил на глобальную переменную.

VB:
Public intOrder As Integer


Public Function fnOrder() As Integer
fnOrder = intOrder
End Function

Private Sub Кнопка384_Click()

Dim DB As Database
Set DB = CurrentDb
Dim RS As Recordset
Dim FileName As String
Dim FilePath As String
Dim StrSQL As String

FileName = intOrder
FilePath = "C:\" & FileName & ".pdf"
'FilePath = FileName & ".pdf"
DoCmd.OutputTo acOutputReport, "rep_empty_find", acFormatPDF, FilePath

End Sub
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39504389
den4ik1987g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,

насколько я понял, у вас с пользователем Joss похожие мысли относительно решения этой задаче.
К сожалению я прован в VB(
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39504394
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
den4ik1987gguest_rusimport,

Не могу понять как переменная StrSQL связана с переменной p.

И почему выделена строку StrSQL = "select * from select_empty_n)" красным, типо ошибка в строке, пока соответственно никаких сдигов
Та же самая ошибка по этому коду, без скобки в StrSQL = "select * from select_empty_n)"
так пробуйте
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Кнопка377_Click()

Dim DB As DAO.Database
Set DB = CurrentDb
Dim FilePath As String
Dim q As QueryDef
Set q = DB.QueryDefs("select_empty_n")
p = InputBox("Введите номер приходного ордера")
q.SQL = "select [Приходный ордер] from select_empty where (ВходнойКонтроль.[Приходный ордер])='" & p & "')"  ' если приходный - строка
'q.SQL = "select [Приходный ордер] from select_empty where (ВходнойКонтроль.[Приходный ордер])=" & p & ")"  ' если приходный - число
FilePath = "C:\" & p & ".pdf"
DoCmd.OutputTo acOutputReport, "rep_empty_find", acFormatPDF, FilePath

End Sub
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39504400
den4ik1987g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport,

Private Sub Кнопка384_Click()

Dim DB As DAO.Database
Set DB = CurrentDb
Dim FilePath As String
Dim q As QueryDef
Set q = DB.QueryDefs("select_empty_n")
p = InputBox("Введите номер приходного ордера")
q.SQL = "select * from select_empty where ([Приходный ордер])='" & p & "'" ' приходный - строка
FilePath = "C:\" & p & ".pdf"
DoCmd.OutputTo acOutputReport, "rep_empty_find", acFormatPDF, FilePath

End Sub


Спасибо, вот так работает. Огромное спасибо. Ваш ответ, guest_rusimport работает.
Задачу можно закрывать.

Всем кто откликнулся ребята, огромное спасибо!
...
Рейтинг: 0 / 0
Присвоение вводимого значения в имя файла экспорта pdf
    #39504407
den4ik1987g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport,

В вашем предыдущем запросе видимо надо было убрать ВходнойКонтроль, и он так же рабочий.
Им и воспользовался в результате, более функционален в выборе имени. В итоге с небольшими изменениями вот результат.


Private Sub Кнопка384_Click()

On Error GoTo Err_AddImage

Dim DB As DAO.Database
Set DB = CurrentDb
Dim FilePath As String
Dim q As QueryDef
Set q = DB.QueryDefs("select_empty_n")
p = InputBox("Введите номер приходного ордера")
q.SQL = "select * from select_empty where ([Приходный ордер])='" & p & "'" ' приходный - строка
StrSQL = "select * from select_empty_n"
Set RS = DB.OpenRecordset(StrSQL, dbOpenDynaset)
FileName = RS.Fields("NumDat")
FilePath = "C:\" & FileName & ".pdf"
'FilePath = "C:\" & p & ".pdf"

DoCmd.OutputTo acOutputReport, "rep_empty_find", acFormatPDF, FilePath
Exit_AddImage:
Err_AddImage:

If Err = 3021 Then
MsgBox ("Данных с таким номером приходного ордера не найдены.")
Resume Exit_AddImage

End If

End Sub
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Присвоение вводимого значения в имя файла экспорта pdf
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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