MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Condição Visível True ou False para campos em subformulário contínuo

    Compartilhe

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 173
    Registrado : 31/08/2012

    [Resolvido]Condição Visível True ou False para campos em subformulário contínuo

    Mensagem  Chamon Consultoria em Sex 08 Jul 2016, 23:15

    Boa noite!


    Dentre os tópicos pesquisados o que mais parece com o meu caso é o seguinte:

    [Você precisa estar registrado e conectado para ver este link.]

    Bd em Access 2010.

    Formulário (Simples): Orcamentos composto pelos campos: txtTipoGrade, 23, 24, 25 ... até o 44. Abaixo explicarei as grades:

    Grade Infantil: campos 23, 24, 25 ... até 33. txtTipoGrade = 3

    Grade Adulto: campos 34, 35, 36 ... até 44. txtTipoGrade = 2

    txtTipoGrade = 1 quando não houver seleção de grade.


    Subformuário (Contínuo): OrcamentosSub composto pelos mesmos campos do formulário Orcamentos, porém com algumas alterações nos nomes:
    TIPOGRADE
    Ctl23, Ctl24, Ctl25 ... até Ctl44.

    Os dados são inseridos no formulário orçamento e "enviados" para o subformulário OrcamentosSub. Assim, não existe digitação nesse subformulário, pois os dados são inseridos nele de forma automática.

    Seguindo as orientações do link citado acima, fiz dois testes:
    Primeiro:
    No evento Ao pintar do subformulário:

    Private Sub Detalhe_Paint()
    If TIPOGRADE = "1" Then

    Ctl23.visible = False
    Ctl24.visible = False
    Ctl25.visible = False 'False até Ctl44, ou seja, como não há grade selecionada todos os campos ficariam invisíveis
    Else

    If TIPOGRADE = "2" Then
    Ctl23.visible = False
    Ctl24.visible = False
    Ctl25.visible = False 'False até Ctl33 ou seja, como o tipo da grade é =2 (adulto) deixaria a grade do 23 ao 33 invisível
    Ctl34.visible = True
    Ctl35.visible = True
    Ctl36.visible = True 'True até o Ctl44

    Else

    If TIPOGRADE = "3" Then


    Ctl23.visible = True
    Ctl24.visible = True
    Ctl25.visible = True 'True até o Ctl33
    Ctl34.visible = False
    Ctl35.visible = False
    Ctl36.visible = False 'False até o Ctl44


    End If
    End If
    End If
    End Sub

    Porém aparece o seguinte erro:
    Erro em tempo de execução: 32521 - Você não pode alterar o valor desta propriedade no evento OnPaint.

    De acordo com o criquio, no Access 2007/2010 pode usar o evento "Ao pintar" do detalhe do formulário. Como o meu Bd é em Access
    2010, acredito que eu tenha inserido o código de maneira errada.


    O segundo teste, foi seguindo a orientação do JPaulo usando a formatação condicional.
    Funcionou em parte em relação aos campos, porém os rótulos não foram ou aparentemente não aceitam ser pintados.


    Se puderem me ajudar com alguma sugestão.

    Desde já agradeço!









    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Condição Visível True ou False para campos em subformulário contínuo

    Mensagem  Avelino Sampaio em Sab 09 Jul 2016, 10:03

    Olá!

    No evento ao pintar, vc consegue alterar as cores sem problemas. Experimente primeiro com um campo.  Algo assim:

    Private Sub Detalhe_Paint()
    If Me!TipoGrade = "1" Then
       Me!NomeRótuloCtl23.ForeColor = vbWhite
       Me!ctl23.BorderColor = vbWhite
    Else
       Me!NomeRótuloCtl23.ForeColor = vbBlack
       Me!ctl23.BorderColor = vbBlack
    End If
    End Sub


    Sucesso!


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 173
    Registrado : 31/08/2012

    Re: [Resolvido]Condição Visível True ou False para campos em subformulário contínuo

    Mensagem  Chamon Consultoria em Dom 10 Jul 2016, 22:01

    Avelino, obrigado pela sugestão, ela funcionou. Fiz apenas um incremento para pintar o conteúdo dos campos.
    Em resumo ficou assim:

    If TIPOGRADE = "1" Then
    Me.RótuloCtl23.ForeColor = vbWhite
    Me.Ctl23.BorderColor = vbWhite
    Me.Ctl23.ForeColor = vbWhite

    Else

    Me.RótuloCtl3.ForeColor = vbBlack
    Me.Ctl23.BorderColor = vbBlack
    Me.Ctl23.ForeColor = vbBlack

    End If


    Para a aplicação ficar 100% o ideal seria se a função Visible funcionasse nessa situação, pois minha ideia para poupar espaço no formulário, era de deixar a grade adulto sobre a infantil. Assim, quando a grade fosse adulto, a infantil não ficaria visível e vice-versa.
    Já nesse modo de pintar, as grades precisam ficar lado a lado, ocupando todo espaço da linha. Se colocar uma grade sobre a outra, quando uma grade é selecionada, a outra que deveria ficar oculta é pintada de branco, sobrepondo a outra grade e não mostra nada.

    Mais uma vez, muito obrigado!

    Abraço



      Data/hora atual: Sab 03 Dez 2016, 04:34