powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Печать OLE-объектов.
5 сообщений из 5, страница 1 из 1
Печать OLE-объектов.
    #32581679
VitaminXP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никто не сталкивался с печатью OLE-объектов в Access?
Задача стоит следующая: есть таблица с полем OLE и нужно в форме сделать кнопку, которая будет автоматически выводить на печать хранимый в этом поле объект (файл Acrobat Reader).
...
Рейтинг: 0 / 0
Печать OLE-объектов.
    #32582033
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделал в лоб - GetChunk(1000000) - достал обьект ,засунул в файл + Shell напечатал
явные минусы:
- приклеивается начальный хэдер от OLE(out.pdf длиннее исходного) ,но у меня Acrobat его принимает
- фиксирован путь на AcroRd32.exe - есть явный способ через реестр/Api сделать путь относительным
- GetChunk хочет размер обьекта - стоит дать с запасом
Удачи!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Dim MyRst As ADODB.Recordset
Dim SqlStr As String
Dim Swop As Variant
Dim MyCanal As Long
If Not IsNull(Me![Sp_Corp].Column( 0 )) Then
SqlStr = "select * from TCorp where Corp_ID= " & Me![Sp_Corp].Column( 0 )
Set MyRst = New ADODB.Recordset
MyRst.Open SqlStr, CurrentProject.Connection, adOpenStatic, adLockReadOnly
If MyRst.RecordCount <>  0  Then
  Swop = MyRst.Fields("Inna").GetChunk( 1000000 )
  On Error Resume Next
  Kill "d:\out.pdf"
  MyCanal = FreeFile
   'Swop = 12345
 
  Open "d:\out.pdf" For Binary As #MyCanal
    Put #MyCanal, , Swop
    Close #MyCanal
Shell "C:\Program Files\Adobe\Acrobat 5.0\Reader\AcroRd32.exe /p /h d:\out.pdf", vbHide
End If
MyRst.Close
Set MyRst = Nothing
End If
...
Рейтинг: 0 / 0
Печать OLE-объектов.
    #32583652
VitaminXP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное тебе спасибо друг! Всё замечательно получилось (всего чуть-чуть нужно было изменить, т.к. я использовал ленточную форму, а ты сделал для списка).
- А для GetChunk можно задать любое большое значение? Я хочу сказать - эта цифира означает максимальный размер объекта или столько будет съедаться места? (правда ему вроде негде съедаться, кроме как для out.pdf, но он вроде маленький получается, т.е. не растет)
- Можно ли как-нибудь автоматически закрывать Acrobat после печати?
...
Рейтинг: 0 / 0
Печать OLE-объектов.
    #32583718
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitaminXPОгромное тебе спасибо друг! Всё замечательно получилось (всего чуть-чуть нужно было изменить, т.к. я использовал ленточную форму, а ты сделал для списка).
- А для GetChunk можно задать любое большое значение? Я хочу сказать - эта цифира означает максимальный размер объекта или столько будет съедаться места? (правда ему вроде негде съедаться, кроме как для out.pdf, но он вроде маленький получается, т.е. не растет)
- Можно ли как-нибудь автоматически закрывать Acrobat после печати?

- GetChunk - вероятно максимальный размер объекта (использую первый раз ) думаю 1/4 RAM систему не убьёт;
- можно убивать через Shell если ты абсолютно уверен в том,что он не открыт пользователем для других целей(Windows XP)
+ асинхронизм - возможно стоит подождать 5 минут или вынести всё во внешний .bat файл;

Код: plaintext
1.
shell -- > taskkill /F /IM "AcroRd32.exe"
...
Рейтинг: 0 / 0
Печать OLE-объектов.
    #32583813
VitaminXP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК. Ещё раз спасибо. Думаю, что тему можно считать закрытой!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Печать OLE-объектов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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