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

    avatar
    BITSILVA
    Novato
    Novato

    Respeito às Regras 100%

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

    Exibição de valores no CheckBox Empty 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
    Exibição de valores no CheckBox AttachmentSGA.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (252 Kb) Baixado 6 vez(es)
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Exibição de valores no CheckBox Empty 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
    Exibição de valores no CheckBox AttachmentSGA_solucao.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (337 Kb) Baixado 10 vez(es)
    avatar
    BITSILVA
    Novato
    Novato

    Respeito às Regras 100%

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

    Exibição de valores no CheckBox Empty Exibição de valores no CheckBox

    Mensagem  BITSILVA em 21/11/2018, 13:08

    Meu amigo Ronaldo,
    Agradeço pela atenção e a grande ajuda na construção dessa etapa do meu projeto.
    Acontece que ao inserir os dias da Semana para o novo Docente ele me dá o erro indicando justamente no vetor.
    O que pode está ocorrendo?
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Exibição de valores no CheckBox Empty Re: Exibição de valores no CheckBox

    Mensagem  ronaldojr1 em 21/11/2018, 17:59

    vc pode me falar exatamente em que momento da erro.
    tipo da erro em qualquer registro ou em todos?

    pois eu testei aqui e esta funcionando.

    eu revi o bd q eu mandei e eu percebi q da alguns erros nos eventos "ao abrir", "no click do botao Editar" e "no click do botao salvar ".
    mas esses erros é por causa da exclusao do subformulario.
    eu corrigi apenas comentando as linhas de erro.

    segue em anexo bd com as alterações citadas acima
    Anexos
    Exibição de valores no CheckBox AttachmentSGA_Solucao.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (357 Kb) Baixado 11 vez(es)
    avatar
    BITSILVA
    Novato
    Novato

    Respeito às Regras 100%

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

    Exibição de valores no CheckBox Empty Exibição de valores no CheckBox

    Mensagem  BITSILVA em 22/11/2018, 14:28

    Olá Ronaldo!
    Ao inserir um novo registro e selecionar os dias da semana me gera erro indicando o seguinte comando abaixo.

    vetor = Split(Me.grDiasSemana, ";")

    Ao navegar pelos registros existente, ele não mostra as checkbox que já foram selecionadas.
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Exibição de valores no CheckBox Empty Re: Exibição de valores no CheckBox

    Mensagem  ronaldojr1 em 22/11/2018, 15:00

    boa tarde

    vamos aos ajustes:
    1 - Ao navegar pelos registros existente, ele não mostra as checkbox que já foram selecionadas.

    solução: coloque a chamada da função getDiasSemana em cada botao de navegação, pois ate o momento a chamada esta apenas
                no botao de pesquisa.
    exemplo:
    Código:
    Private Sub btPrimeiro_Click()
        On Error GoTo Err_btPrimeiro_Click


        DoCmd.GoToRecord , , acFirst
        getDiasSemana 'atualiza os dias da semana
    Exit_btPrimeiro_Click:
        Exit Sub

    Err_btPrimeiro_Click:
        MsgBox "Este é o Primeiro Registro!", vbInformation, "Sistema"
        Resume Exit_btPrimeiro_Click

    2 - Ao inserir um novo registro e selecionar os dias da semana me gera erro indicando o seguinte comando abaixo.
        vetor = Split(Me.grDiasSemana, ";")

    solução: na tabela "TDocente" coloque o seguinte valor como valor padrao do campo "grDiasSemana"
        "0;0;0;0;0;0"

    segue link da imagem para auxiliar
    https://1drv.ms/u/s!AtPRVVtDFCbSjMEMOOgQi6Nz3BYPbg

    abraço

    Conteúdo patrocinado

    Exibição de valores no CheckBox Empty Re: Exibição de valores no CheckBox

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/6/2019, 03:44