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


2 participantes

    Exibição de valores no CheckBox

    avatar
    BITSILVA
    Novato
    Novato


    Respeito às regras : 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 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 7 vez(es)
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  ronaldojr1 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 14 vez(es)
    avatar
    BITSILVA
    Novato
    Novato


    Respeito às regras : 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 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 : Respeito às Regras 100%

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

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

    Mensagem  ronaldojr1 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 17 vez(es)
    avatar
    BITSILVA
    Novato
    Novato


    Respeito às regras : 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 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 : Respeito às Regras 100%

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

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

    Mensagem  ronaldojr1 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: 10/5/2024, 02:41