MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

3 participantes

    [Resolvido]Alterar legenda de relatórios

    Finformática
    Finformática
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 810
    Registrado : 23/03/2010

    [Resolvido]Alterar legenda de relatórios Empty [Resolvido]Alterar legenda de relatórios

    Mensagem  Finformática 21/6/2022, 20:56

    Grandes Mestres

    Existe algum modo de alterar a propriedade "legenda" dos relatórios de uma só vez? Algum macete, alguma técnica, algum ajeitadinho, algum código? Evitar abrir, alterar e salvar todos os relatórios de um sistema em que a legenda é um nome próprio. Em torno de 80 objetos.

    Abraços
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8147
    Registrado : 05/11/2009

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Alexandre Neves 21/6/2022, 21:28

    Boa noite
    Criar código na unha?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Finformática
    Finformática
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 810
    Registrado : 23/03/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Finformática 21/6/2022, 21:41

    Tem como? Alguma artimanha?

    Muito grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8147
    Registrado : 05/11/2009

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Alexandre Neves 21/6/2022, 22:10

    Editar relatório
    Alterar etiqueta
    guardar e fechar relatório


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Finformática
    Finformática
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 810
    Registrado : 23/03/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Finformática 22/6/2022, 02:20

    Não entendi amigo. Pode ser um pouco mais explícito.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8147
    Registrado : 05/11/2009

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Alexandre Neves 22/6/2022, 07:39

    Bom dia
    1-Criar código para editar relatório
    2-Criar código para alterar etiqueta
    3-Criar código para guardar e fechar relatório


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3775
    Registrado : 04/04/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Avelino Sampaio 22/6/2022, 10:49

    Olá!

    Algo assim:

    Public Sub fncAlteraLegenda()
    Dim obj As Object
    For Each obj In CurrentProject.AllReports
       DoCmd.OpenReport (obj.Name), acViewDesign, , , acHidden
       Reports(obj.Name).Caption = "Site UsandoAccess"
       DoCmd.Close , obj.Name
       DoCmd.Save acReport, obj.Name
    Next
    End Sub


    Nota: Só vale para extensão ACCDB, pelo fato de ter que abrir o relatório no modo design.

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Finformática
    Finformática
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 810
    Registrado : 23/03/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Finformática 22/6/2022, 12:24

    Grande Avelino!

    Exatamente isso. Perfeito. Ajudou demais e vai continuar ajudando. Havia alterado 80% dos relatórios do sistema em desenvolvimento (um dia e meio) e o restante foi em dois segundos. Nessa época eleitoral tem várias encomendas de sistemas para controlar intensões de votos de candidatos a cargos políticos e uma das coisas que mais exigem é aparecer os nomes deles na tela e nos relatórios.
    Mestre é mestre mesmo. Perfeitamente isso.

    Abusando um pouco: tem como alterar o código e adicionar a primeira linha dos relatórios (cabeçalho) o mesmo nome?

    Muito obrigado, muito obrigado mesmo. Demais

    Forte abraço.

    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3775
    Registrado : 04/04/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Avelino Sampaio 22/6/2022, 14:30


    Não entendi muito bem.  Você deseja alterar o valor de um rótulo ou de um campo ?   Todos os relatórios tem o rótulo/campo com o mesmo nome ?

    Uma sugestão:  você teria o trabalho de entrar nos 80 relatórios mas faria uma única vez.   Acrescente no evento "Ao abrir", o rótulo/campo para assumir o valor da legenda.  Algo assim:

    Private Sub Report_Open(Cancel As Integer)
    Me!Cabeçalho.Caption = Me.Caption
    End Sub


    Aguardamos


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Finformática
    Finformática
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 810
    Registrado : 23/03/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Finformática 22/6/2022, 21:23

    Olá Grande Mestre,

    Entendi o seu raciocínio. Ficará bem prático para o próximo sistema. Como pensei também de no formulário principal, onde está o menu, criar uma variável (oculta) com o conteúdo que desejo e no cabeçalho do relatório chamá-lo. Porém é o mesmo esquema, tem que fazer pelo menos uma vez em todos os relatórios (+-80).
    Voltando ao caso do post acima. Nesse mesmo código que altera a legenda de todos os relatórios de uma só vez, que funcionou perfeitamente, não teria como acrescentar para fazer o mesmo no cabeçalho do mesmo relatório? Ficando:
    Legenda: Controle de Eleitores - Paulo Coelho
    Cabeçalho: Controle de Eleitores - Paulo Coelho

    Após o cabeçalho viria a descrição do relatório que é totalmente variável e não tendo como padronizar. Ex.: "Relação de Eleitores por Bairros".

    No cabeçalho do relatório:
    ___________________________________________
    Controle de Eleitores - Paulo Coelho
    Relação de Eleitores por Bairros
    ___________________________________________

    Como se faz essa linha para cabeçalho (Header)? Reports(obj.Name).Caption = "Site UsandoAccess"
    Reports(obj.Name).???????? = "Site UsandoAccess"


    Muito grato

    Forte abraço
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3775
    Registrado : 04/04/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Avelino Sampaio 22/6/2022, 21:38

    Ok, mas ainda paira a dúvida se os rótulos/campos nos relatório já existem e se vc quer que altere apenas os dados.   E se já existem, todos eles possuem o mesmo nome de identificação ?  Ou você quer que crie o rótulo/campo em cada relatório para receber a informação ?

    Aguardamos


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Finformática
    Finformática
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 810
    Registrado : 23/03/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Finformática 22/6/2022, 22:43

    Caro amigo,

    Vou tentar ser mais claro.
    Tenho um "Sistema de Controle de Eleitores" da última eleição em que o candidato era: Catatau dos Santos. Então em todas as telas (visualização de relatório ou formulários) exibe "Catatau dos Santos - Eleição 2020" e nos relatórios, na primeira linha do cabeçalho, um rótulo com "Catatau dos Santos - Eleição 2020". Para isso acontecer na propriedade dos relatório, em legenda tem "Catatau dos Santos - Eleição 2020". Correto? Em todos os relatórios a primeira linha do cabeçalho um rótulo "Catatau dos Santos - Eleição 2020". Todos foram colocados manualmente, um a um.
    Nesse momento (2022) recebo uma encomenda de novo candidato com basicamente as mesmas opções. Pego o sistema antigo e vou fazer as devidas adaptações. Entre elas trocar em todos relatórios, no cabeçalho, "Catatau dos Santos - Eleição 2020" para "Penalonga Silva - Eleição 2022". O mesmo fazendo nas legendas de todos os relatórios. Fui mais claro?
    Com o código que você criou já resolvo o problema da legenda com perfeição. Como acrescentar ao código para fazer o mesmo na primeira linha do cabeçalho de todos os relatórios.

    Reports(obj.Name).Caption = "Site UsandoAccess" ---- Aqui você cria/altera na legenda do relatório (propriedades).

    Como se faz essa linha para cabeçalho (Header)? Reports(obj.Name).???????? = "Site UsandoAccess"

    Espero que tenha entendido.

    No cabeçalho do relatório:
    ___________________________________________
    Penalonga Silva - Eleição 2022 ----> Fixo para todos os relatórios. Aqui é o problema...
    Relação de Eleitores por Bairros -----> Totalmente variável para ser colocado manualmente
    ___________________________________________

    Muito grato

    Forte abraço
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3775
    Registrado : 04/04/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Avelino Sampaio 22/6/2022, 23:21

    Ok, você então usa rótulo para entrar com a informação no cabeçalho. O que falta você me informar é se em todos os relatórios o nome do rótulo é o mesmo. Abra dois ou três relatórios no modo design e verifique o nome do rótulo deste cabeçalho. Se forem todos iguais é mais tranquilo. Se os nomes forem diferentes é preciso saber se todos estão listados na mesma posição(índice).

    Aguardamos


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3775
    Registrado : 04/04/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Avelino Sampaio 23/6/2022, 00:08

    Supondo que todos tenham o mesmo nome para o rótulo, a linha fica assim:

    Reports(obj.Name).Controls("NomeDoRótulo").Caption = "Penalonga Silva - Eleição 2022"


    Supondo que os rótulos tenham nomes diferentes mas vc deu a sorte de todos estarem posicionados como primeiro no índice, a linha fica assim:

    Reports(obj.Name).Controls(0).Caption = "Penalonga Silva - Eleição 2022"


    Atenção: Faça um backup antes de qualquer teste.


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Finformática
    Finformática
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 810
    Registrado : 23/03/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Finformática 23/6/2022, 03:00

    Grande Mestre,

    Quase isso. Todos os rótulos são diferentes, então vai a sua segunda opção. Observações:
    1. Se não tiver nenhuma linha (rótulo) no cabeçalho e também não tiver espaço entre cabeçalho da página e cabeçalho do relatório: Erro em tempo de execução 438 - O objeto não aceita esta propriedade ou método.
    2. Se tiver só um rótulo no cabeçalho ele substitui sem problema.
    3. Se tiver dois rótulos no cabeçalho ele substitui o segundo. O segundo é o título do relatório (ex. Relação de Eleitores dos Bairros). Deve ser conservado. Feito manualmente.

    Como todos os relatórios tem 2 rótulos (2 linhas) o grande problema é substituir o primeiro rótulo (1 linha).

    Exemplo:
    ___________________________________________
    Controle de Eleitores - Paulo Coelho -------------------- Tem que substituir aqui
    Relação de Eleitores por Bairros ------------------------- Está substituindo aqui. Deve ser preservado. Feito manualmente.
    ___________________________________________

    Quase perfeito. Só falta isso.

    Lembrou muito bem no faça backup. Se não tivesse feito voltaria a estaca zero para fazer um a um o título dos relatórios (+-80)

    Muito grato pela paciência.

    Forte abraço

    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3775
    Registrado : 04/04/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Avelino Sampaio 23/6/2022, 09:18

    Olá!

    segue o código para a realização dos testes.

    Comentei o código para ficar mais claro o entendimento do que ele faz.

    Public Sub fncAlteraLegenda()
    Dim obj As Object
    Dim TextoAtual$
    Dim TextoNovo$
    Dim j As Byte
    TextoAtual = "Controle de Eleitores - Paulo Coelho"
    TextoNovo = "Controle de Eleitores - Avelino Sampaio"
    On Error Resume Next
    'percorre todos os relatórios
    For Each obj In CurrentProject.AllReports
       'abre o relatório no mod design e oculto
       DoCmd.OpenReport (obj.Name), acViewDesign, , , acHidden
       'altera o título do relatório para o novo texto
       Reports(obj.Name).Caption = TextoNovo
       j = 0
       'percorre pelos quatro primeiros controles do relatório
       'com o objetivo de buscar pelo texto atual
       For j = 0 To 3
           'verifica se o controle(rótulo) contem o texto atual
           If Reports(obj.Name).Controls(j).Caption = TextoAtual Then
               'verifica se ocorreu um erro (geralmente o 438)
               If Err.Number = 0 Then
                   'o rótulo correto foi identificado e será alterado para o novo texto
                   Reports(obj.Name).Controls(j).Caption = TextoNovo
                   'encerra o laço For
                   Exit For
               Else
                   'Ocorreu um erro. Limpa o erro para nova verificação
                   Err.Number = 0
               End If
           'verifica se já ocorreu a mudança do rótulo para o novo texto
           ElseIf Reports(obj.Name).Controls(j).Caption = TextoNovo Then
               'mudança de texto já ocorrida, encerrando o for
               Exit For
           End If
       Next
      'fecha o relatório
       DoCmd.Close , obj.Name
       'salva as mudanças no relatório
       DoCmd.Save acReport, obj.Name
    Next
    MsgBox "Atualização concluída ...", vbInformation, "Aviso"
    End Sub


    Nota: não esqueça do backup

    Aguardamos


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3775
    Registrado : 04/04/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Avelino Sampaio 23/6/2022, 09:57

    Oi

    Abaixo uma alternativa de código, evitando que ocorra o erro 438.


    Public Sub fncAlteraLegenda()
    Dim obj As Object
    Dim TextoAtual$
    Dim TextoNovo$
    Dim j As Byte
    TextoAtual = "Controle de Eleitores - Paulo Coelho"
    TextoNovo = "Controle de Eleitores - Avelino Sampaio"
    'percorre todos os relatórios
    For Each obj In CurrentProject.AllReports
       'abre o relatório no mod design e oculto
       DoCmd.OpenReport (obj.Name), acViewDesign, , , acHidden
       'altera o título do relatório para o novo texto
       Reports(obj.Name).Caption = TextoNovo
       j = 0
       'percorre pelos quatro primeiros controles do relatório
       'com o objetivo de buscar pelo texto atual
       For j = 0 To 3
           'verifica se o controle é do tipo RÓTULO
           If Reports(obj.Name).Controls(0).ControlType = 100 Then
               'verifica se o rótulo contem o texto atual
               If Reports(obj.Name).Controls(j).Caption = TextoAtual Then
                   'o rótulo correto foi identificado e será alterado para o novo texto
                   Reports(obj.Name).Controls(j).Caption = TextoNovo
                   'encerra o laço For
                   Exit For
               'verifica se já costa a mudança do rótulo com o novo texto
               ElseIf Reports(obj.Name).Controls(j).Caption = TextoNovo Then
                   'mudança de texto já ocorrida, encerrando o For
                   Exit For
               End If
           End If
       Next
       'fecha o relatório
       DoCmd.Close , obj.Name
       'salva as mudanças no relatório
       DoCmd.Save acReport, obj.Name
    Next
    MsgBox "Atualização concluída ...", vbInformation, "Aviso"
    End Sub


    Aguardamos


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Finformática
    Finformática
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 810
    Registrado : 23/03/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Finformática 23/6/2022, 12:58

    Olá Grande Mestre,

    Isso é uma verdadeira aula de conhecimentos. Procurando os mínimos detalhes dos problemas. Muito bem documento. No momento estou impossibilitado de testar (trabalho/cliente). Ao voltar estudo o caso e dou retorno.
    Muito obrigado, muito obrigado mesmo.

    Forte Abraço

    Finformática
    Finformática
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 810
    Registrado : 23/03/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Finformática 23/6/2022, 19:51

    Grande Avelino,

    Fiz alguns testes bem rápidos com o primeiro código e estão funcionando perfeitamente. O rótulo tem que ser igual ao informado no código que será substituído. É isso? Se encontrar um "Relação de Eleitores Aniversariantes" no cabeçalho do relatório (independente de ser primeira ou segunda linha) nunca será substituído. Correto?

    Muito obrigado.

    Muito grato mesmo.

    Vou colocar como resolvido e irei fazer uns testes mais criteriosos. Caso necessário reabro o tópico.

    Feliz São João!

    Forte abraço
    Finformática
    Finformática
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 810
    Registrado : 23/03/2010

    [Resolvido]Alterar legenda de relatórios Empty Re: [Resolvido]Alterar legenda de relatórios

    Mensagem  Finformática 23/6/2022, 19:55

    Resolvido

    Muito obrigado


      Data/hora atual: 3/7/2022, 10:06