|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
Ребят, нужна помощь проффов в 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? или может как задать имя из сформированного отчета?? Спасибо всем кто поможет, никак не могу найти похожей проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 20:29 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
Скорее всего дело в том, что в экспортируемых объектах Access не любит запросов параметров отбора. Как я выкручивался из этой ситуации? Привожу пример. У меня отчёт зависел от номера квартала. В запросе было поле Quartal . Я создавал глобальную переменную intQuartal Код: vbnet 1.
и глобальную функцию Код: vbnet 1. 2. 3.
в запросе прописывал эту функцию в качестве условия отбора Код: vbnet 1. 2.
Перед экспортом присваиваю переменной intQuartal нужное значение, а после делаю экспорт. Всё работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2017, 09:05 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
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-переменной, например) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2017, 09:10 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
den4ik1987g, можно ещё так Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2017, 11:11 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
den4ik1987g, fix Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2017, 11:15 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
den4ik1987g, давайте с самого начала. Откуда вы вызываете отчет и экспорт? Если из формы, то, может быть, в ней есть поле "Приходный ордер"? Тогда в запросе вместо [Введите приходный ордер] укажите Forms![Имя формы]![Приходный ордер]. Запрос будет выполняться молча, а номер ордера для имени файла берите из поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2017, 11:39 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), Вызов происходит по кнопке из формы, в этой форме кроме кучи кнопок никакой информации нет, т.е. о поле [Приходный ордер]. тоже нет инфы. Я понимаю что вы имели ввиду. Не так давно я сам до такой системы дошел в задаче http://www.sql.ru/forum/1267830/dobavit-otchet-v-stroku-tablicy-polya-vlozhenie-po-knopke?hl= Тут к сожалению немного другая задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 14:23 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
guest_rusimport, Не могу понять как переменная StrSQL связана с переменной p. И почему выделена строку StrSQL = "select * from select_empty_n)" красным, типо ошибка в строке, пока соответственно никаких сдигов Та же самая ошибка по этому коду, без скобки в StrSQL = "select * from select_empty_n)" ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 14:30 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
Ребят, кстати забыл всех поблагодарить за отклики, тока сейчас полноценно добрался до инета. Так и не узнав как решается задача, запушил на кнопку код, который формирует все файлы автоматически без ввода. Если надо будет выложу, просто это не в теме этой задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 14:33 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 14:56 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
непоймучка, насколько я понял, у вас с пользователем Joss похожие мысли относительно решения этой задаче. К сожалению я прован в VB( ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 15:07 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 15:39 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
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 работает. Задачу можно закрывать. Всем кто откликнулся ребята, огромное спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 16:17 |
|
Присвоение вводимого значения в имя файла экспорта pdf
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 16:51 |
|
|
start [/forum/topic.php?fid=45&msg=39503900&tid=1612191]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 282ms |
total: | 438ms |
0 / 0 |