Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как поменять ориентацию листа при печати формы, Изменение ориентации листа в Access 2000 
:(
    Опции темы
Massa
Дата 3.5.2006, 05:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Этот код работает при печати формы в access 2003 

Private Sub Print_Form_Click()
On Error GoTo Err_Print_Form_Click

    Printer.Orientation = acPRORLandscape
    Printer.Copies = 1
    DoCmd.PrintOut
    
Exit_Print_Form_Click:
    Exit Sub

Err_Print_Form_Click:
    MsgBox Err.Description
    Resume Exit_Print_Form_Click
    
End Sub

Но в access 2000 нет переменной(объекта) Printer. И мне надо при нажатии на кнопку вывести форму на печать с ориентацией Landscape именно в access 2000.
 
PM MAIL   Вверх
Akina
Дата 3.5.2006, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Massa @  3.5.2006,  06:09 Найти цитируемый пост)
Но в access 2000 нет переменной(объекта) Printer. 

Да ну! а куда ж он делся? и куда ты тогда, спрашивается, печатаешь? 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Massa
Дата 3.5.2006, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Как ни странно, но данного класса

Class Printer
    Member of Access

нет в Access 2000. У меня код не компилится. Выдает - не определена переменная Printer.
Я просмотрел Браузером объектов библиотеку Access - там действительно нет Printer. 
PM MAIL   Вверх
Akina
Дата 3.5.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Мда... забыл уже... в 2000-м работай через свойство PrtDevMode формы. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Massa
Дата 3.5.2006, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Попробовал код, что приведен ниже. Чет не работает.

Код

Private Type str_DEVMODE
    RGB As String * 94
End Type

Private Type type_DEVMODE
    strDeviceName As String * 32
    intSpecVersion As Integer
    intDriverVersion As Integer
    intSize As Integer
    intDriverExtra As Integer
    lngFields As Long
    intOrientation As Integer
    intPaperSize As Integer
    intPaperLength As Integer
    intPaperWidth As Integer
    intScale As Integer
    intCopies As Integer
    intDefaultSource As Integer
    intPrintQuality As Integer
    intColor As Integer
    intDuplex As Integer
    intResolution As Integer
    intTTOption As Integer
    intCollate As Integer
    strFormName As String * 32
    lngPad As Long
    lngBits As Long
    lngPW As Long
    lngPH As Long
    lngDFI As Long
    lngDFr As Long
End Type


Private Sub Print_Form_Click()
On Error GoTo Err_Print_Form_Click

    ' Printer.Orientation = acPRORLandscape
    ' Printer.Copies = 1
    
    Const DM_PORTRAIT = 1
    Const DM_LANDSCAPE = 2
    Dim DevString As str_DEVMODE
    Dim DM As type_DEVMODE
    Dim strDevModeExtra As String

    If Not IsNull(Me.PrtDevMode) Then
        strDevModeExtra = Me.PrtDevMode
        DevString.RGB = strDevModeExtra
        LSet DM = DevString
        DM.lngFields = DM.lngFields Or DM.intOrientation

        ' Initialize fields.
        If DM.intOrientation = DM_PORTRAIT Then
            DM.intOrientation = DM_LANDSCAPE
        Else
           ' DM.intOrientation = DM_PORTRAIT
        End If

        ' Update property.
        LSet DevString = DM
        Mid(strDevModeExtra, 1, 94) = DevString.RGB
        Me.PrtDevMode = strDevModeExtra
    End If
        
    DoCmd.PrintOut
    
Exit_Print_Form_Click:
    Exit Sub

Err_Print_Form_Click:
    MsgBox Err.Description
    Resume Exit_Print_Form_Click
    
End Sub
  

Это сообщение отредактировал(а) Akina - 3.5.2006, 13:42
PM MAIL   Вверх
Akina
Дата 3.5.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



1) Замени определение str_DEVMODE на:
Код
Private Type str_DEVMODE
    RGB   As String * 94
    Dummy As String * 418
End Type

2) Для чего у тебя строка 52?

И что именно не работает? 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Massa
Дата 4.5.2006, 03:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Я вытащил пример кода из хелпа и модифицировал его. Там была эта строка 52 и я ее оставил как есть.
При нажатии на кнопку принт - выдается сообщение от Microsoft Office Access - "To set this property, open the form or report in Design View"

Главное не могу в отладчике посмотреть. Не тормозит на точке останова.
 Вылетает это сообщение и приходится нажимать на кнопку Ok и тишина. А если заремаркировать On Error - то ваще тишина - даже этого сообщения нет. 

Пробовал маркировать 52 - ю строку. 
Вот  код из хелпа:
Код

Public Sub SwitchOrient(ByVal strName As String)

    Const DM_PORTRAIT = 1
    Const DM_LANDSCAPE = 2
    Dim DevString As str_DEVMODE
    Dim DM As type_DEVMODE
    Dim strDevModeExtra As String
    Dim rpt As Report
    
    ' Opens report in Design view.
    DoCmd.OpenReport strName, acDesign
    Set rpt = Reports(strName)
    
    If Not IsNull(rpt.PrtDevMode) Then
        strDevModeExtra = rpt.PrtDevMode
        DevString.RGB = strDevModeExtra
        LSet DM = DevString
        DM.lngFields = DM.lngFields Or DM.intOrientation
             
        ' Initialize fields.
        If DM.intOrientation = DM_PORTRAIT Then
            DM.intOrientation = DM_LANDSCAPE
        Else
            DM.intOrientation = DM_PORTRAIT
        End If
        
        ' Update property.
        LSet DevString = DM
        Mid(strDevModeExtra, 1, 94) = DevString.RGB
        rpt.PrtDevMode = strDevModeExtra
    End If
    
    Set rpt = Nothing
    
End Sub
 
PM MAIL   Вверх
Akina
Дата 4.5.2006, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Massa @  4.5.2006,  04:10 Найти цитируемый пост)
 "To set this property, open the form or report in Design View"

Ну так и сделай это - переведи (или изначально открой) форму в режиме дизайна, измени параметры, потом переключи в режим просмотра и печатай. Только не забудь вернуть все взад smile или просто не сохраняй исправленный макет... 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Massa
Дата 4.5.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Так с удовольствием поменял. Вот только не догоняю чет - какое свойство или параметр поменять?
Тот код что я содрал с хелпа делает это, я решил - что мне как бы это не надо и выкинул.
 
Код

   ' Opens report in Design view.
    DoCmd.OpenReport strName, acDesign
    Set rpt = Reports(strName)
 

 
PM MAIL   Вверх
Akina
Дата 4.5.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Massa @  4.5.2006,  11:36 Найти цитируемый пост)
Так с удовольствием поменял. 

Фраза не понята. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Massa
Дата 5.5.2006, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Там чет не дописалось - бы пропало.
Я не знаю - чего менять.

 
PM MAIL   Вверх
Akina
Дата 5.5.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Ты должен сменить режим вывода формы на макет, внести изменение, потом вернуть режим формы и выполнить печать. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0681 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.