MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Exibição de valores no CheckBox

    Compartilhe

    BITSILVA
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 25
    Registrado : 30/08/2010

    Exibição de valores no CheckBox

    Mensagem  BITSILVA em 10/11/2018, 16:22

    Amigos do Fórum,
    Como fazer para que o meu subform que possui checkbox mostre os valores que já foram selecionados durante a navegação dos registros no meu formulário?
    Para a caixa de listagem deu certo, mas para a checkbox (dias da semana) do meu subform dá errado!

    Segue o código:

    #Formulário FDocente

    Private Sub Form_Current()
       Me.ltPesquisaDocente = Me.IDDocente -> está funcionando
       Me.FDocenteDias = Me.IDDocente -> está dando erro.
    End Sub
    Anexos
    SGA.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (252 Kb) Baixado 5 vez(es)
    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 338
    Registrado : 01/08/2011

    Re: Exibição de valores no CheckBox

    Mensagem  ronaldojr1 em 12/11/2018, 14:06

    bom dia,
    Para funcionar corretamente a sua necessidade eu tive que reestruturar um pouco seu projeto.

    antes de começar a explicar só uma observação:
        vc nao ira precisar criar uma tabela a parte para guardar o idDocente e dia Semana(Tdias), pois assim
        vc esta criando multiplos registros para exibir em um único registro. nesse caso daria muito trabalho
        ficar varrendo a tabela atras dos registros corretos para cada docente. Outro problema é q desse jeito
        a tabela ficaria grande rapidamente, pois um único docente poderia ter 7 registros na tabela dias.

    solução:
    1 - na tabela TDocente eu adicionei o seguinte campo: "grDiasSemana" do tipo texto com tamanho de campo 20.
        a idéia do campo é guardar varios valores em um único campo.
        no seu caso vc ira guardar as multiplas seleções dos checkbox.
        montei na seguinte estrutura: 0;0;0;0;0;0
        o segredo de usar corretamente esses valores sem sacrificio é com o auxilio da função split.
        ela sera responsavel por separar os dias para nós usando o ";" como referência para separar os campos.
    nesse caso a função ira retornar um vetor de 6 posições: onde a primeira posicao sera o indice 0, ela ira representar segunda feira
    e sabado que é a posição 5 sera a ultima posição do vetor. vc vera o uso pratico nas etapas 2 e 4.
             

    2 - criei um modulo a parte contendo a função para resgatar e atualizar os checkbox dos dias da semana, tem que ser
        em um módulo a parte para a sua macro poder exergar a mesma.
       
    Código:
    Public Function getDiasSemana()
        Dim vetor() As String
        Dim grDiasSemana As String
        
        grDiasSemana = Forms!FDocente!grDiasSemana

        vetor = Split(grDiasSemana, ";")
        
        Forms!FDocente!chSegunda = vetor(0)
        Forms!FDocente!chTerca = vetor(1)
        Forms!FDocente!chQuarta = vetor(2)
        Forms!FDocente!chQuinta = vetor(3)
        Forms!FDocente!chSexta = vetor(4)
        Forms!FDocente!chSabado = vetor(5)
        
       End Function

    3 - no formulario FDocente criei 6 CheckBox nomeados como chSegunda, chTerca, etc...

    4 - no formulario FDocente criei a função para atualizar os dias da semana no registro do docente.
    Código:
    Public Function setDiasSemana(diaSemana As Integer)
       Dim vetor() As String
       Dim strDiasSemana As String
      
        'indice do vetor
        '0 segunda
        '1 terca
        '2 quarta
        '3 quinta
        '4 sexta
        '5 sabado
        
        vetor = Split(Me.grDiasSemana, ";")
        
        'o campo grDiasSemana sera um campo responsavel por armazenar os dias de curso
        'a ideia da funcao é usar o split para seperar os dias da semana
        'apos seperar os dias da semana sera possivel trabalhar com os dias um a um
        'no final de td sera montado novamente a string para fazer a atualização do campo grDiasSemana
        Select Case diaSemana
            Case 1: 'segunda
                vetor(0) = IIf(Me.chSegunda, -1, 0)
            Case 2: 'terça
                vetor(1) = IIf(Me.chTerca, -1, 0)
            Case 3: 'quarta
                vetor(2) = IIf(Me.chQuarta, -1, 0)
            Case 4: 'quinta
                vetor(3) = IIf(Me.chQuinta, -1, 0)
            Case 5: 'sexta
                vetor(4) = IIf(Me.chSexta, -1, 0)
            Case 6: 'sabado
                vetor(5) = IIf(Me.chSabado, -1, 0)
        End Select
        strDiasSemana = vetor(0) & ";" & vetor(1) & ";" & vetor(2) & ";" & vetor(3) & ";" & vetor(4) & ";" & vetor(5)
        grDiasSemana = strDiasSemana
    End Function

    5 - para cada checkbox adicionei a chamada da função para atualizar os registros passando o dia da semana como parametro.
        exemplo de uso: call setDiasSemanas(diaSemana) 'Dia semana aceita valores de 1 a 6, sendo que 1 é segunda feira e 6 é sabado.
    Código:
    Private Sub chSegunda_AfterUpdate()
     Call setDiasSemana(1)
    End Sub

    6 - adicionei uma validação na função form_current para verificar se tem algum valor de docente selecionado. caso nao estiver, os campos
        da semana ficam setados como false.
    Código:
    Private Sub Form_Current()
        Me.ltPesquisaDocente = Me.IDDocente
        
        If IsNull(Me.IDDocente) Then
            Me.chSegunda = False
            Me.chTerca = False
            Me.chQuarta = False
            Me.chQuinta = False
            Me.chSexta = False
            Me.chSabado = False
        End If
        
        'Form!FDocenteDias = Me.IDDocente
    End Sub

    7 - na macro aposAtualizar do comboBox ltPesquisaDocente.
       7.1 - insira a ação: ExecutarCódigo
       7.2 - Nome da Função: getDiasSemana()
       
    8 - excluir o subForm Dias Semanas.

    estou mandando o projeto finalizado para usar de exemplo.
    boa sorte ai fera.
    Anexos
    SGA_solucao.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (337 Kb) Baixado 2 vez(es)

      Data/hora atual: 16/11/2018, 04:00