MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Todos os campos da Seção do Relatório com a Mesma Altura do campo mais alto (sem usar Layout Tabela)

    avatar
    denisapp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 20/03/2013

    Todos os campos da Seção do Relatório com a Mesma Altura do campo mais alto (sem usar Layout Tabela) Empty Todos os campos da Seção do Relatório com a Mesma Altura do campo mais alto (sem usar Layout Tabela)

    Mensagem  denisapp em 20/3/2018, 11:22

    Pessoal, tudo bem? Sempre recorro a este fórum para solucionar dúvidas de programação em Access. Atualmente precisei de um método para colocar os campos de uma seção do relatório na mesma altura que um campo expansível. O problema é que todos os métodos pesquisados ou não davam certo ou utilizavam o recurso nativo de Layout Tabela. Bom, este método do layout tira a flexibilidade do relatório, uma vez que mesmo que tenhamos zerado a distância entre os campos, ele sempre ficava com um pequeno espaço entre eles. E isso me irrita, pois, deixa os relatórios feios. Encontrei um método que resolve esta questão e gostaria de deixar registrado aqui para quem precisar. Esta é minha contribuição após ser ajudado tantas vezes por esta equipe. O mérito vai para o usuário "dhookom" e o link original é:

    answers.microsoft.com/en-us/msoffice/forum/msoffice_access-mso_winother/making-all-fields-in-a-reports-detail-section-grow/ea8c077d-17b8-4947-bd5d-a18a98a12ea7
    Copiar link e colar no browser

    Vamos lá:

    Basta colar o código abaixo no evento "AO IMPRIMIR" da seção que quiser, tomando o cuidado de substituir "Me.Section(0)" pelo endereço correto da seção que deseja. O código abaixo pode ser adaptado para sua situação. Pode-se, por exemplo, eliminar a faixa amarela que é criada. Abraços.
    Código:

    Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
       Dim intMaxHeight As Integer
       Dim ctl As Control
       Dim lngHilite As Long
       lngHilite = 10092543   'pale yellow
       'Find highest control in Detail section _
         that has a tag property of "Border"
       For Each ctl In Me.Section(0).Controls
           If ctl.Tag = "Border" Then
               If ctl.Height > intMaxHeight Then
                   intMaxHeight = ctl.Height
               End If
           End If
       Next
       'Draw a box around each control in Detail _
         that has a tag property of "Border"
       For Each ctl In Me.Section(0).Controls
           If ctl.Tag = "Border" Then
               'make the background pale yellow
                Me.Line (ctl.Left, ctl.Top)- _
                   Step(ctl.Width, intMaxHeight), lngHilite, BF
               Me.Line (ctl.Left, ctl.Top)- _
                   Step(ctl.Width, intMaxHeight), vbBlack, B
           End If
       Next

    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Todos os campos da Seção do Relatório com a Mesma Altura do campo mais alto (sem usar Layout Tabela) Empty Re: Todos os campos da Seção do Relatório com a Mesma Altura do campo mais alto (sem usar Layout Tabela)

    Mensagem  Alexandre Neves em 22/3/2018, 20:35

    Boa noite e o fórum agradece a colaboração
    Foi movido para esta sala, por ser a mais adequada


    .................................................................................
    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

      Data/hora atual: 4/12/2020, 13:41