|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
Господа, здравствуйте. Есть проблема. Открывается отчет как экземпляр и на экране их может быть несколько. Нужно распечатать активный экземпляр. Это и не получается. При нажатии кнопки печати я в коде нахожу нужный экземпляр, а как отправить на печать отчет именно с этими данными. В последствии нужно будет и в ПДФ выбрасывать, и там та же беда DoCmd.OutputTo acOutputReport, MyName, acFormatPDF, MyFile, True как сюда впихнуть невпихуемое? Акс 2007 sp3 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 00:23 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
Игортан, Не пробовал, но по идее должно работать, если сначала активировать нужный экземпряр Код: vbnet 1.
А потом печатать/выводить в PDF обычным образом. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 10:37 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
ИгортанПри нажатии кнопки печати я в коде нахожу нужный экземпляр, а как отправить на печать отчет именно с этими данными. Код: vbnet 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 11:20 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
Игортан, чтобы напечатать именно с этими данными открываете второй раз именно этот отчет в нормальном режиме (т.е. на печать). имена у них должны быть разные-присваиваются в процессе создания модуля класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 13:31 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
MrShinНе пробовал, но по идее должно работать, если сначала активировать нужный экземпряр Код: vbnet 1.
туда рвался изначально. Наверное нужно уточнить чуток. Отчет открывается в режиме просмотра (не отчета). В этом состоянии у репорта нету свойства SetFocus. Пробовал и через установки фокуса на контрол, та же беда. Сделал его открытие в режиме отчета. Да, тут уже можно поиграть, правда данными не заполняется но думаю это можно было бы решить, но не красиво на экране получается. Тыкнул в облать репорта и область выделяется... ` Код: vbnet 1.
тоже не прокатило.. Вчера пришла идея (как всегда перед тем как заснуть), наверное придется сделать дубль этого отчета и открывать его обычным экземпляром сразу на печать, правда у меня используются временная заливка данных в темр таблицу для источника... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 13:41 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
aleckoИгортан, чтобы напечатать именно с этими данными открываете второй раз именно этот отчет в нормальном режиме (т.е. на печать). имена у них должны быть разные-присваиваются в процессе создания модуля класса. О! По ходу вы меня опередили))) про модуль класса не совсем понял... т.е. копировать этот репорт программно просто под другим именем и потом открывать его на печать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 13:47 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
ИгортанОткрывается отчет как экземпляр и на экране их может быть несколько. Нужно распечатать активный экземпляр. Это и не получается. При нажатии кнопки печати я в коде нахожу нужный экземпляр, а как отправить на печать отчет именно с этими данными. формируйте отчет в ДОС или НТМ формате не обязательно ведь иметь его в аксесс-формате хотя бы видимо сделала форму с контролируемой строкой итогов например ооо Крона 12345,22 12354,22...... ооо Рога и копыта ....... тоо антилопа Гну ..... по какой строке кликнула, тот отчет и печатала ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 14:53 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
А так пробовали? The OutputTo method carries out the OutputTo action in Visual Basic. expression.OutputTo(ObjectType, ObjectName, OutputFormat, OutputFile, AutoStart, TemplateFile, Encoding) ObjectName Optional Variant. A string expression that's the valid name of an object of the type selected by the ObjectType argument. If you want to output the active object, specify the object's type for the ObjectType argument and leave this argument blank . ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 15:08 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
PredeclaredА так пробовали? Метод OutputTo выполняет действие OutputTo в Visual Basic. Expression.OutputTo (ObjectType, ObjectName, OutputFormat, OutputFile, AutoStart, TemplateFile, Encoding) Необязательный вариант ObjectName. Строковое выражение, которое является допустимым именем объекта типа, выбранного аргументом ObjectType. Если вы хотите вывести активный объект, укажите тип объекта для аргумента ObjectType и оставьте этот аргумент пустым..речь вед идет о том, открыто несколько отчетов, их каким то образом просматривают, по какому то критерию отбирают ---вот поэтому и предлагаю, заранее в форме высветить этот критерий ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 15:20 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, Как раз в ворде все и было. Потом человек все время в пдф конвертировал. Как бы убираем не нужное звено... И вот пока играюсь всплыла "проблема" Открываешь 3 экземпляра - все ок открываешь 4ый - и половины вложенных отчетов нету, от слова совсем. При чем, все это происходит молча. как вариант - предполагаю, что натыкаюсь на ограничение открытых объектов(баз данных) потому как в темп таблице данные для этих подъотчетов есть, а на экран не выводятся... Использую Line для рисования по нужной высоте клеток псевдо таблицы. перенес из подчиненного в основной в группировку - это в попытке уменьшить количество количество "баз данных". В подчиненном работало на ура, в основном не подстраивается под реальную высоту поля, рисует тупо по размеру из конструктора... Может не успевает расставить поля все перед тем как линии рисовать... репорт длинный и большой по данным полей 50-70 по всему размазано, у многих полей стоит "расширение". Вобщем, какое то веселье... если есть у кого какие мысли - поделитесь, плиз. Кстати, может плохо ищу, но что то типа ФАК по работе с формами, сделать и для репортов и их экземпляров. Понимаю, что почти одно и тоже. Но различия есть и приходится их по кусочкам собирать на форуме. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 15:21 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
Игортанпро модуль класса не совсем понял... т.е. копировать этот репорт программно просто под другим именем и потом открывать его на печать? нет - его же открыть под своим именем но в но Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
эта проблема вылазит при выводе нескольких копий одного класса(имя модуля класса - одинаковое). если отчеты вообще разные-т.е. модули разные, и имена разные, то проблемы нет вообще - сделать public переменную, которая принимает имя получившего фокус или клик отчета. и распечатывать отчет с этим именем (открывая второй раз в нормальном режиме) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 15:34 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
alecko, Спасибо за информацию! Что то я пока не сильно понял по коду, я потом спрошу непонятное.. Пока тут игрался, дай думаю попробую стандартной кнопкой конвертнуть в пдф Открыл 3 отчета активным сделал 2й(средний) Конвертировать - показать - и опа - а все равно конвертирован 1й открытый экзапляр Даже у себя в стандартных средствах это дело не сделали.. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 15:48 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
ИгортанИспользую Line для рисования по нужной высоте клеток псевдо таблицы. перенес из подчиненного в основной в группировку - это в попытке уменьшить количество количество "баз данных". вот из-за этого и применяю вордовские или НТМ отчеты по умолчанию у меня ПДФ-принтер ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 16:44 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
PredeclaredА так пробовали? The OutputTo method carries out the OutputTo action in Visual Basic. expression.OutputTo(ObjectType, ObjectName, OutputFormat, OutputFile, AutoStart, TemplateFile, Encoding) ObjectName Optional Variant. A string expression that's the valid name of an object of the type selected by the ObjectType argument. If you want to output the active object, specify the object's type for the ObjectType argument and leave this argument blank . не прокатило ПЕНСИОНЕРКАречь вед идет о том, открыто несколько отчетов, их каким то образом просматривают, по какому то критерию отбирают ---вот поэтому и предлагаю, заранее в форме высветить этот критерий проблема не в найти нужный экземпляр, а распечатать его. Открыто 3 экземпляра отчета вне зависимости от того, какой отчет сейчас активен, печатается первый открытый экземпляр ПЕНСИОНЕРКАвот из-за этого и применяю вордовские или НТМ отчеты по умолчанию у меня ПДФ-принтер там еще есть факт закрытия вордовского файла паролем(тоже есть). Просто нужен "защищенный от изменения документ". ПДФ принтер, своего рода костыль. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2017, 14:01 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
alecko, aleckoэта проблема вылазит при выводе нескольких копий одного класса(имя модуля класса - одинаковое). если отчеты вообще разные-т.е. модули разные, и имена разные, то проблемы нет вообще - сделать public переменную, которая принимает имя получившего фокус или клик отчета. и распечатывать отчет с этим именем (открывая второй раз в нормальном режиме) Код по поиску нужного экземпляра с попыткой старта пробовал и из модуля и из самого репорта Код: 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.
печатает, но только когда открыт только один экземпляр. Если открыто несколько, то бьет ошибку... -2147219503 --Method 'Orientation' of object '_Printer' failed не дает настраивать этот самый принтер, как я понял ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2017, 15:42 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
alecko, если не сложно, направьте или у вас хоть и экземпляры отчетов, но они открыты по одному? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2017, 18:41 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
Игортан, признаться я запутался: толи у Вас отдельные отчеты, толи экземпляры класса если экземпляры,то конечно действия будут сложнее, вкратце: создаете Private коллекцию в разделе объявлений вызывающего модуля, после создания экземпляра класса закидываете его в коллекцию, (при этом в экземпляре получаете hwnd-это код окна он всегда уникальный-его присваивает система (но можно и счетчик какой-нить)), с этим индексом, снова создаете экземпляр-закидываете в коллекцию со своим индексом, т.е. все модули у Вас в коллекции со своими индексами. Распечатываете отчет как член коллекции по индексу. (настройка принтера должна быть в экземпляре класса)-отдаете только команду-нужному экземпляру как члену коллекции по индексу, т.е. открываете этот же экземпляр класса но на печать... если же у Вас разные отчеты, то: Hwnd присваивается системой, изменить его невозможно.поэтому вешаете на какое нить событие, проверить можно так: Код: vbnet 1. 2. 3.
объявляете в разделе объявлений какого-нить модуля Public переменную(хотя если открываете из одного места, и это место не закрывается в течение времени пока отчеты открыты, то может и private), присваиваете ей hwnd получившего фокус (или по какому иному событию ставшего активным отчета), и печатаете тот отчет у которого hwnd cовпадают т.е. где-то Код: vbnet 1.
у Вас в модуле Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 11:02 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 12:08 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
alecko, Спасибо за помощь! aleckoсоздаете Private коллекцию в разделе объявлений вызывающего модуля, после создания экземпляра класса закидываете его в коллекцию, (при этом в экземпляре получаете hwnd-это код окна он всегда уникальный-его присваивает система (но можно и счетчик какой-нить)), с этим индексом, снова создаете экземпляр-закидываете в коллекцию со своим индексом, т.е. все модули у Вас в коллекции со своими индексами. Что я подразумеваю. У меня есть какой то отчет. Я открываю его через New_AR1. Как экземпляр. Потому как хочу открыть несколько экземпляров ОДНОГО отчета. Есть код в модуле этого отчета. Как я понимаю, это тоже модуль класса. Модуль по вызову на печать отдельный. В нем я находил активный экземпляр отчета (Hwnd активного окна сохраняю отдельно) по Hwnd перебором коллекции Reports и пытался из него(самого экземпляра отчета в коде) вызывать печать. Из правила "Как закрыть экземпляр формы" - сначала фокус на экземпляр, потом ее закрытие. Но тут не прокатывает, ибо фокус перекинуть невозможно из за режима - Просмотр. aleckoРаспечатываете отчет как член коллекции по индексу. (настройка принтера должна быть в экземпляре класса)-отдаете только команду-нужному экземпляру как члену коллекции по индексу, т.е. открываете этот же экземпляр класса но на печать... Код настройки принтера я заносил в модуль самого отчета - это же модуль класса Хотя реакция была одинаковая, что код был в модуле отчета, что во внешнем, одинаковая. Код я привел выше. Если открыт один ЭКЗЕМПЛЯР отчета - он распечатывается без проблем если открыто несколько экземпляров одного отчета - выбивает ошибку. Сейчас буду глядеть вашу ссылку ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 18:25 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
alecko, Да, это пробовал чуть ранее по образу expression.OutputTo(ObjectType, , OutputFormat, OutputFile, AutoStart, TemplateFile, Encoding) печатает первый открытый экземпляр ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 18:26 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
ИгортанКак раз в ворде все и было. Потом человек все время в пдф конвертировал. Как бы убираем не нужное звено... Word (2010 точно) умеет сохранять в PDF, ничего не мешает делать это программно из акцеса. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 22:44 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
ИгортанУ меня есть какой то отчет. Я открываю его через New_AR1. Как экземпляр. Потому как хочу открыть несколько экземпляров ОДНОГО отчета. Есть код в модуле этого отчета. Как я понимаю, это тоже модуль класса. у всех созданных экземпляров одно и тоже имя -поэтому обращаться к ним можно только по индексу в коллекции, соответственно Docmd.openreport rptName-и не подходит. печать происходит по имени, что неправильно. нужно открывать ещё один модуль класса и предусмотреть режим вывода на печать. как вариант заблокировать экран, закрыть все отчеты кроме нужного, распечатать его через Docmd.openreport, потом открыть остальные на свои места, разблокировать экран? да, я печатаю таки разные отчеты. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 22:51 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
alecko, да, все таки мы думали в одном ключе. Правда, я думаю скопировать отчет под другим именем и при необходимости его на печать/пдф выбрасывать да, будет + по весу бд но зато не нужно будет много действий. Да и отчет итоговый - относительно долгоиграющий Ёжик`Word (2010 точно) умеет сохранять в PDF, ничего не мешает делать это программно из акцеса. Да, я это знаю Идея была вовсе отказаться от ворда. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 13:11 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
Игортан отчет под другим именем и при необходимости его на печать/пдф выбрасывать да, так будет оптимальнее. Для работы/анализов все таки более приспособлены формы. а уже на основе форм лучше сгенерить отчет, проверить его и отправить на печать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 15:03 |
|
Печать выбранного экземпляра отчета
|
|||
---|---|---|---|
#18+
ИгортанИспользую Line для рисования по нужной высоте клеток псевдо таблицы. перенес из подчиненного в основной в группировку - это в попытке уменьшить количество количество "баз данных". В подчиненном работало на ура, в основном не подстраивается под реальную высоту поля, рисует тупо по размеру из конструктора... Может не успевает расставить поля все перед тем как линии рисовать... репорт длинный и большой по данным полей 50-70 по всему размазано, у многих полей стоит "расширение". Господа, может кому пригодится. Из хелпа по .Line(...) авторзамечания Вы можете использовать этот метод только в процедуре события или макрос , указанном в OnPrint или OnFormat свойства события для раздела отчета, или OnPage свойства события для отчета. Так вот. Ковырялся на форуме и сейчас обратно не найду, кто писал, но: в OnFormat - с контролами можно кое что делать. При этом - получившиеся размеры полей НЕИЗВЕСТНЫ. потому берутся как в конструкторе. в OnPrint - вот здесь реальные размеры полей уже известны. И прорисовку линий по размерам полей нужно делать именно здесь. я перенес вызов прорисовки в OnPrint и все стало на места... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2017, 14:09 |
|
|
start [/forum/moderation_log.php?user_name=olkir]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 718ms |
total: | 892ms |
0 / 0 |