Compartilhar via

Erro em Tempo de Execução 2455, ao definir propriedades de sub-relatórios que antes funcionavam na versão do Access 2000 e não funcionam no Access 2010

Anônima
2011-02-20T21:32:10+00:00

Tenho uma aplicação que possui uma função de formatação de campos de relatório que se inicia da seguinte forma:

Sub FormatarRelatorio(Relatorio As String, Optional SubRelatorio As String, Optional SubSubRelatorio As String)

    Dim Rep  As Report

    Dim Cont As Integer

    If SubSubRelatorio <> "" Then

        If RelatorioCarregado(Relatorio) Then

            Set Rep = Reports(Relatorio).Report(SubRelatorio).Report(SubSubRelatorio).Report

        ElseIf RelatorioCarregado(SubRelatorio) Then

            Set Rep = Reports(SubRelatorio).Report(SubSubRelatorio).Report

        Else

            Set Rep = Reports(SubSubRelatorio).Report

        End If

    ElseIf SubRelatorio <> "" Then

        If RelatorioCarregado(Relatorio) Then

            Set Rep = Reports(Relatorio).Report(SubRelatorio).Report

        Else

            Set Rep = Reports(SubRelatorio).Report

        End If

    Else

        Set Rep = Reports(Relatorio).Report

    End If

    ....

Esta função é chamada no evento Open de Relatórios e Sub-Relatórios, para acessar as propriedades ForeColor, BorderColor e BackColor de campos e seções.

O problema que estou enfrentando é que ao definir o objeto Rep, que é do Tipo Report, ele apresenta a mensagem de erro 2455, de referência inválida à propriedade Form/Report.

Tentei "debugar" a rotina e verifiquei em "Variáveis Locais" que tanto a propriedade "Controls" como "Reports", vem definido no campo "Valor" a descrição de um erro. Se usar esta propriedade, o erro será apresentado.

O que preciso na verdade é acessar um controle de um sub-relatório ou um controle de um sub-sub-relatório e não estou conseguindo.

Não sei se existe alguma relação com os objetos referenciados no VBA ou suas ordens e, por isso, estou postando a relação definida em minha aplicação, a saber:

  • Visual Basic for Applications;
  • Microsoft Access 14.0 Object Library;
  • Microsoft Office 14.0 Object Library;
  • Microsoft Office 14.0 Access Database engine Object
  • Microsoft ActiveX Data Objects 2.1 Library
  • Ole Automation
  • Microsoft Windows Common Controls 6.0 (SP6)
  • Microsoft Outlook 12.0 Object Library
  • Microsoft Scripting RunTime
  • Microsoft Forms 2.0 Object Library

Aguardo um posicionamento se este recurso foi desativado no Access 2010 ou se foi alterada a forma de referência para relatórios.

Para referenciar campos de formulários e sub-formjulários em minha aplicação está funcionando sem problemas. O problema ocorre apenas com relatórios.

Obrigado!

Carlos E. Niemeyer

Microsoft 365 e Office | Access | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

1 resposta

Classificar por: Mais útil
  1. Anônima
    2011-03-11T14:16:16+00:00

    Depois de várias pesquisas e tentativas percebi na inspeção de variáveis que realmente não é possível acessar o método Controls e Report de SubRelatórios, pois todos eles apresentam o erro de referência inválida. Isso no Access 2010.

    A única forma de resolver esta questão foi mudar o parâmetro da função da seguinte forma:

    => Sub FormatarRelatorio(Rep As Report)

    Ao chamar ou usar a função é declarado no método Open dos Relatórios e Sub-Relatórios a função FormatarRelatorio da seguinte maneira:

    => FormatarRelatorio Me

    Desta forma foi possível acessar todas as propriedades e métodos do relatório em questão, não sendo necessário utilizar a referência do Relatório Pai para acessar os relatórios filhos.

    Nota: Esta função FormatarRelatorio é uma função personalizada que percorre todos os campos do relatório mencionado e formata com cores de fundo e cores das letras conforme configurações do usuário, bem como realiza formatações das cores de fundos das seções dos relatórios conforme especificado pelo usuário.

    O problema da função mencionada foi resolvido, porém fica a questão do porque não é possível acessar propriedades de campos de sub-relatórios pelo relatório principal, que na versão 2000 e 2003 do Access funcionava e agora na versão 2010 passou a não funcionar mais.

    Se alguém tiver algo a acrescentar, fique a vontade.

    Obrigado!

    Esta resposta foi útil?

    0 comentários Sem comentários