Propriedades da impressora não herdadas por objetos que usam a impressora padrão

Support for Office 2003 has ended

Microsoft ended support for Office 2003 on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 290293
Avançadas: Requer especialista de codificação, interoperabilidade e habilidades de multiusuário.

Este artigo aplica-se a um banco de dados do Microsoft Access (.mdb) ou um banco de dados do Microsoft Office Access 2007 (.accdb). Este artigo também se aplica a um projeto Microsoft Access (.adp).
Sintomas
Depois de alterar propriedades do objeto Application.Printer programaticamente, formulários e relatórios que usam a impressora padrão não automaticamente herdam estas configurações.
Causa
Formulários salvos e relatórios armazenam informações sobre a impressora como parte de sua definição. Quando você visualiza ou imprimir relatórios e formulários salvos, esses objetos use as informações impressora que são armazenadas dentro deles em vez de herdar as configurações do objeto Application.Printer .
Resolução
Há duas soluções possíveis para forçar o relatório para usar as configurações da impressora atual.

Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades.

Defina a propriedade da impressora para Application.Printer

Após personalizar as propriedades para o objeto Application.Printer , defina a propriedade impressora do formulário ou relatório para o objeto Application.Printer . Isso força o formulário ou relatório para destruir a estrutura DEVMODE atual e para herdar um novo nome do objeto Application.Printer .

Observe que essa abordagem é bom para alterar temporariamente as propriedades de impressora do objeto. As configurações da impressora não serão armazenadas com o objeto, a menos que você explicitamente salvar o objeto posteriormente. Isso também faz com que o objeto ser definida como Impressora específica para o período de tempo que ele está aberto.

Para definir a propriedade do objeto impressora para o objeto Application.Printer , execute essas etapas:
  1. Abra o banco de dados de exemplo Northwind.mdb.
  2. Feche o formulário menu de controle principal quando ela aparecer.
  3. Pressione ALT+F11 para abrir o Editor do Visual Basic.
  4. No menu Inserir , clique em módulo .
  5. Adicionar o Visual Basic seguinte código de VBA para o novo módulo:
    Sub ChangePrinterSettingsForReport()   Dim rpt As Access.Report   Dim prtr As Access.Printer      Set Application.Printer = Nothing   Set prtr = Application.Printer      'Set the default printer's orientation to landscape   prtr.Orientation = acPRORLandscape   'Set the default printer's paper size to legal   prtr.PaperSize = acPRPSLegal   'Print Preview the Alphabetical List of Products Report   DoCmd.OpenReport "Alphabetical List of Products", acPreview   Set rpt = Reports("Alphabetical List of Products")   'Set the Printer property of the report to the   'Application.Printer object   Set rpt.Printer = prtr   'Uncomment the following line if you wish to save the object   'with the current settings   'DoCmd.Save acReport, rpt.NameEnd Sub					
  6. Clique no procedimento de exemplo acima e, em seguida, no menu Executar , clique em Executar Sub/UserForm .
  7. No menu arquivo , clique em Fechar e voltar para o Microsoft Access .
  8. No Microsoft Office Access 2003 ou no Microsoft Access 2002, clique em Configurar página no menu arquivo , e em seguida, clique na guia página .

    No Microsoft Access 2007, clique no Botão Microsoft Office , aponte para Imprimir e, em seguida, clique em Visualizar impressão . Na guia Visualização , clique em Configurar página no grupo de Layout de página e clique na página de guia.

    Observe que Tamanho de papel do relatório é definido como gerar e a orientação está definida como Paisagem .
  9. Feche o relatório.
  10. Na janela banco de dados, Visualizar impressão a lista alfabética de produtos relatório novamente. Observe que as configurações da impressora não foram salvas automaticamente com o relatório.

Atribuir diretamente as configurações de impressora do objeto

Outra solução é definir as configurações de impressora do objeto propriamente dito, em vez de defini-las para a propriedade Application.Printer programaticamente. Definindo as propriedades individuais da propriedade do objeto Printer é semelhante ao usuário alterar manualmente as configurações da impressora na caixa de diálogo Configurar página . Quando você programaticamente definir as configurações do objeto impressora diretamente, as configurações são salvas com o objeto automaticamente.

Para definir as configurações do objeto impressora diretamente, execute estas etapas:
  1. Abra o banco de dados de exemplo Northwind.mdb.
  2. Feche o formulário menu de controle principal quando ela aparecer.
  3. Pressione ALT+F11 para abrir o Editor do Visual Basic.
  4. No menu Inserir , clique em módulo .
  5. Adicionar o Visual Basic seguinte código de VBA para o novo módulo:
    Sub ChangePrinterSettingsForReport()   Dim rpt As Access.Report     DoCmd.OpenReport "Alphabetical List of Products", acPreview   Set rpt = Reports("Alphabetical List of Products")         'Set the default printer's orientation to landscape   rpt.Printer.Orientation = acPRORLandscape   'Set the default printer's paper size to legal   rpt.Printer.PaperSize = acPRPSLegalEnd Sub					
  6. Clique no procedimento de exemplo acima e, em seguida, no menu Executar , clique em Executar Sub/UserForm .
  7. No menu arquivo , clique em Fechar e voltar para o Microsoft Access .
  8. No menu arquivo , clique em Configurar página e, em seguida, clique na guia página .

    No Microsoft Access 2007, clique no Botão Microsoft Office , aponte para Imprimir e, em seguida, clique em Visualizar impressão . Na guia Visualização , clique em Configurar página no grupo de Layout de página e clique na página de guia.

    Observe que Tamanho de papel do relatório é definido como gerar e a orientação está definida como Paisagem .
  9. Feche o relatório.
  10. Na janela banco de dados, Visualizar impressão a lista alfabética de produtos relatório novamente. Observe que as configurações de impressora automaticamente foram salvas com o relatório.
Situação
Esse comportamento é por design.
Mais Informações
Formulários e relatórios de armazenam de uma estrutura denominada DEVMODE como parte de sua definição. A estrutura DEVMODE é uma estrutura do Microsoft Windows que define informações da impressora para um determinado objeto. Por exemplo, itens, como tamanho do papel, bandeja de papel e orientação são armazenadas como parte dessa estrutura. Quando você cria um novo formulário ou relatório objeto, o objeto de formulário ou relatório herda automaticamente da estrutura DEVMODE do objeto Application.Printer . Quando você salva o formulário ou relatório, a estrutura DEVMODE que foi herdada automaticamente obtém salva com ele.

Por padrão, as propriedades de impressora para o objeto Application.Printer será o mesmo que a impressora padrão no Microsoft Windows. No entanto, é possível alterar programaticamente essas propriedades para que o Microsoft Access utiliza um conjunto diferente de propriedades para a impressora padrão. Tabelas, consultas, modos de exibição e procedimentos armazenados não armazenam informações sobre a impressora como parte de sua definição. Portanto, quando você imprime tabelas, consultas, modos de exibição ou procedimentos armazenados, eles sempre usará as configurações atuais definidas no objeto Application.Printer .

Passos para reproduzir o problema

  1. No Access 2003 ou no Access 2002, abra o banco de dados de exemplo Northwind.mdb.
  2. Feche o formulário menu de controle principal quando ela aparecer.
  3. No menu Exibir , aponte para Objetos de banco de dados e, em seguida, clique em relatórios .
  4. Clique no relatório Lista alfabética de produtos na janela banco de dados e, em seguida, no menu arquivo clique em Configurar página .
  5. Clique na guia página e verifique se a opção de Impressora padrão está selecionada na seção impressora da caixa de diálogo.
  6. Clique em OK para fechar a caixa de diálogo Configurar página .
  7. No menu Inserir , clique em módulo .
  8. Adicione o seguinte Visual Basic for Applications código ao módulo:
    Sub ChangePrinterSettings()   'Set the default printer's orientation to landscape   Application.Printer.Orientation = acPRORLandscape   'Set the default printer's paper size to legal   Application.Printer.PaperSize = acPRPSLegalEnd Sub					
  9. Clique no procedimento de exemplo acima e, em seguida, no menu Executar , clique em Executar Sub/UserForm .
  10. No menu arquivo , clique em Fechar e voltar para o Microsoft Access .
  11. No menu Exibir , aponte para Objetos de banco de dados e, em seguida, clique em consultas .
  12. Clique na consulta Lista alfabética de produtos e, em seguida, no menu arquivo , clique em Visualizar impressão .
  13. No menu arquivo , clique em Configurar página .
  14. Clique na guia ' página e observe que a opção orientação é definida como Paisagem e a opção de Tamanho de papel é definida para gerar conforme o esperado.
  15. Clique em Cancelar para fechar a caixa de diálogo Configurar página e, em seguida, feche a consulta.
  16. No menu Exibir , aponte para Objetos de banco de dados e, em seguida, clique em relatórios .
  17. Na janela banco de dados, clique no relatório Lista alfabética de produtos e, em seguida, clique em Visualizar .
  18. No menu arquivo , clique em Configurar página .
  19. Clique na guia ' página e observe que a opção orientação está definida para Retrato e a opção de Tamanho de papel é definida para carta , que difere as configurações feitas para o objeto Application.Printer .
PRB ACC2002 ACC2007

Propriedades

ID do Artigo: 290293 - Última Revisão: 04/10/2007 16:20:37 - Revisão: 7.1

Microsoft Office Access 2007, Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition

  • kbmt kbappnote kbprogramming kbvba kbactivation kbprb kbprint KB290293 KbMtpt
Comentários