LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Проблемы ...
 Тема: Проблемы при выводе на печать
 
 15.06.2007 21:02:17
All
4316 сообщения
1-ый


Тема: Проблемы при выводе на печать
Пример la_automat 2 очень помогает, но появились другие проблемы.

1. Я вставил строку "app.PrintOut" распечатки документа Word между
"app.ActiveDocument.SaveAs strDOC"и срокой "app.Quit"
При этом заремировал 4 строки
With Me.myWordDoc
.HyperlinkAddress = strDOC ' Создаем ссылку
.Visible = True ' Отображаем элемент
End With

Так как VBA не понял что есть myWordDoc (может не подключил библиотеку?) При запуске выдает сообщение Word "Печать еще не закончена. Закрытие Word приведет к удалению всех ожидающих печати заданий. Закрыть Word?" При ответе Да ничего не печатается, но файл записывается, при ответе Нет происходит и печать и запись файла. Но что интересно, при повторном запуске процедуры происходит следующее: Access 2000 выдает сообщение: "Нельзя сохранить данный файл, поскольку он используется другим процессом. (С:WINDOWS\Рабочий стол\Заключение.doc)" А после этого сообщение от Word "Сохранить изменения в документе Документ1?" (и такие сообщения выводятся, накладываясь друг на друга последовательно нумеруя файлы Документ, столько раз, сколько запускаю. Но у меня же файл Заключение.doc! При этом ничего не печатается. Если вообще перегрузить машину то опять удается получить однократную печать документа.

Что делать?
2. Мне необходимо собрать строковую переменную, по значениям нескольких полей в форме. Но эти поля содержат значения полученные на основании списка, источником строк которого, является запрос из другой таблицы. В этой таблице хранятся текстовые значения и соответствующие им значения счетчика (один присоединенный столбец ширина, которого равна нулю). Получается так: что когда я опрашиваю значение поля, то получаю число (значение счетчика), хотя визуально в списке формы присутствует текст, а когда опрашиваю поле со свойством .Text, то получаю строковое значение. Все бы ничего, но необходимо для последнего устанвливать фокус. Если полей много и форма с вкладками то форма мигает и дергается, плюс это занимает время. Как это обойти? Может брать числовое значение из поля формы и по нему искать в таблице используя запрос, а затем смотреть какому текстовому значению это соответствует или использовать Find посредством Recordset и искать таким же способом? Что быстрее и как лучше?



P.S. Клиенты автоматизации
Автор: Евгений от 0:00:00 Источник ...
 15.06.2007 21:02:17
Николай3
48 сообщения


RE: Проблемы при выводе на печать
Понятно, что это происходит из-за того, что еще не началась печать.
Поэтому можно сделать так:
1.способ
Использовать функцию WaitForPrinterChange
2. В цикле проверять задания принтера
Пример по 1:

Public Declare Function WaitForPrinterChange Lib "winspool.drv" (ByVal hPrinter As Long, ByVal flags As Long) As Long
Public Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
Public Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long

Public Const PRINTER_CHANGE_ADD_JOB = &H100
Public Const PRINTER_CHANGE_JOB = &HFF00
Public Const PRINTER_CHANGE_WRITE_JOB = &H800


Sub PP()
Dim hPrinter As Long
Dim NamePrinter As String
NamePrinter = "HP DeskJet 610C"
OpenPrinter NamePrinter, hPrinter, 0&
Application.PrintOut
WaitForPrinterChange hPrinter, &H400
ClosePrinter hPrinter
End Sub

имя принтера можно узнать из Application.ActivePrinter (или через EnumPrinters и комп.)
Некоторый недостаток - чисто этого примера - возможные сбои при неправильной работе принтера.
Так что надо бы доработать при использовании


P.S. Клиенты автоматизации
Автор: Николай от 10.04.2002 18:30:35 Источник ...
 15.06.2007 21:02:17
Николай3
48 сообщения


RE: Проблемы при выводе на печать
по второму вопросу:
У ComboBox есть свойство Column
Например Combo1.Column(1) - значение второго столбца


P.S. Клиенты автоматизации
Автор: Николай от 10.04.2002 19:02:45 Источник ...
 15.06.2007 21:02:17
Евгений5
15 сообщения


RE: Проблемы при выводе на печать
Николай, огромное спасибо, что откликнулись.
Дело в том, что я начинающий пользователь и много еще не понимаю.
Вопрос теперь в том, куда вставить декларирование функций WaitForPrinterChange,OpenPrinter и декларирование констант. Я попробовал это сделать в коде формы из которой хочу проводить печать, но получил ошибку "Constant,... and Declare statements not allowed as Pablic members of object modules."
Помогите разобраться теперь и с этим.
Заранее спасибо.
sea@im.net.ua Евгений
Сообщите свой E-mail.


P.S. Клиенты автоматизации
Автор: Евгений от 12.04.2002 22:26:34 Источник ...
 15.06.2007 21:02:18
Николай3
48 сообщения


RE: Проблемы при выводе на печать
В модуле формы пишите Private ..
В просто модулях (мод. классов) можете использовать Private (тогда функция,константа, переменная и др. будут доступны только внутри этого модуля) или Public..(соответственно будут доступны из других модулей, в т.ч. из форм)
Значения констант можно посмотреть любым APIViewer
здесь используется
Const PRINTER_CHANGE_DELETE_JOB = &H400
Как правило, значения флагов могут составляться из комбинации нескольких констант (CONST1 Or CONST2 ....)
Вообще эта функция (WaitForPrinterChange) оставлена для совместимости с более ранними версиями Windows, и Microsoft рекомендует использовать другие, но это такой ....(зато больше возможностей)

e-mail указан -"конвертик"



P.S. Клиенты автоматизации
Автор: Николай от 13.04.2002 4:30:19 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Проблемы ...
ПоискПоиск  Список форумовСписок форумов  
right