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

    Caixa de listagem dinâmica

    avatar
    kasa1982
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 06/12/2018

    Caixa de listagem dinâmica Empty Caixa de listagem dinâmica

    Mensagem  kasa1982 em 15/9/2020, 03:37

    Boa noite a todos,

    Preciso de um auxilio para a seguinte questão:

    A) Criei um formulário com um botão e uma pergunta (Sim/Não/Cancelar);
    Caixa de listagem dinâmica T119

    B) Se Pressionado [Sim], abre o [formulário A], Se pressionado [Não], abre o [Formulário B]. Ambos os formulários gravam na mesma tabela.

    C) No load de ambos os formulários eu verifico se existe o registro criado, caso não exista então eu crio o registro;

    Caixa de listagem dinâmica T217

    D) Se o registro existe, então apenas abro o formulário e exibo os dados para poder fazer a edição no mesmo.

    Acontece que:
    1. No formulário existe dois campos tipo [Caixa de Combinação], onde, dependendo da resposta do usuário no primeiro eu busco e monto os valores a serem selecionados na segunda [Caixa de Combinação];

    Caixa de listagem dinâmica T317

    Caixa de listagem dinâmica T412

    2. O problema está na abertura do formulário para visualização e edição dos dados, não está trazendo os valores cadastrados na segunda [Caixa de Combinação], e quando navego nos registros acontece a mesma coisa.

    Caixa de listagem dinâmica T710

    No Exemplo acima, tenho dois registros que quando clico nos botões para navegar o campo [Tipo] está vindo preenchido corretamente, porém, o campo Equipamento vem em branco.

    No Evento [Após Atualizar] do campo [Tipo], estou usando o seguinte código:

    Código:
    Private Sub cbnOrigDesc_AfterUpdate()
            
        If Me.cbnOrigDesc = 2 Then
            Me.lblEquipamento.Visible = True
            Me.txtOrigem.Visible = True
            Me.txtOrigem.RowSourceType = "Table/Query"
            Me.txtOrigem.RowSource = "SELECT peqp_cdeqpto_1, peqp_descric_1 FROM public_pcpeqp WHERE peqp_descric_1 Like 'TIN%' And peqp_codbrev_1 = '002' ORDER BY peqp_cdeqpto_1;"
            Me.txtOrigem.Requery
        ElseIf Me.cbnOrigDesc = 1 Then
            Me.lblEquipamento.Visible = True
            Me.txtOrigem.Visible = True
            Me.txtOrigem.RowSourceType = "Table/Query"
            Me.txtOrigem.RowSource = "SELECT peqp_cdeqpto_1, peqp_descric_1 FROM public_pcpeqp WHERE peqp_descric_1 Like 'TAN%' And peqp_codbrev_1 = '002' ORDER BY peqp_cdeqpto_1;"
            Me.txtOrigem.Requery
        End If

    End Sub

    No Evento [Load] do formulário, executo o seguinte código:

    Código:
    Private Sub Form_Load()
    If Nz(DLookup("[numop]", "public_tbl_adega_dt_ret_fer", "[numop]='" & Forms!FRM_Adega_Dt!txtNumOP & "' AND [deletado]='f' AND [tipo_acao]=2"), 0) = 0 Then
        MsgBox "Não existem lançamentos de fermento, será criado o primeiro registro para o Descarte nesta OP.", vbInformation, "Informação"
            
        Dim rst1 As Recordset
        Dim sel As String
                                
        'Cria o registro na tabela
        sel = "SELECT * from public_tbl_adega_dt_ret_fer"
        Set rst1 = CurrentDb.OpenRecordset(sel)
        
            rst1.AddNew
                rst1![NumOP] = Forms!FRM_Adega_Dt!txtNumOP
                rst1![tipo_acao] = 2
                rst1![datahora_inclusao] = Now()
                rst1![usuario_inclusao] = getUsuarioAtual()
                rst1![deletado] = 0
                rst1.Update
        
            'Fecho a conexão
            rst1.Close
            
            Me.Recalc
            
    Else
        If Me.cbnOrigDesc = 2 Then
                Me.txtOrigem.RowSourceType = "Table/Query"
                Me.txtOrigem.RowSource = "SELECT peqp_cdeqpto_1, peqp_descric_1 FROM public_pcpeqp WHERE peqp_descric_1 Like 'TIN%' And peqp_codbrev_1 = '002' ORDER BY peqp_cdeqpto_1;"
                Me.txtOrigem.Requery
        ElseIf Me.cbnOrigDesc = 1 Then
                Me.txtOrigem.RowSourceType = "Table/Query"
                Me.txtOrigem.RowSource = "SELECT peqp_cdeqpto_1, peqp_descric_1 FROM public_pcpeqp WHERE peqp_descric_1 Like 'TAN%' And peqp_codbrev_1 = '002' ORDER BY peqp_cdeqpto_1;"
                Me.txtOrigem.Requery
        End If
    End If

    End Sub
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer

    Respeito às Regras 100%

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

    Caixa de listagem dinâmica Empty Re: Caixa de listagem dinâmica

    Mensagem  Avelino Sampaio em 17/9/2020, 10:16

    Olá!

    O que se usa no Access para substituir um fragmento de texto é o asterisco (*) e não o (%), a não ser que o senhor esteja utilizando o sqlServer.

    o senhor também pode reduzir a escrita do seu código, evitando repetições desnecessárias no IF

    Private Sub cbnOrigDesc_AfterUpdate()
    Me.lblEquipamento.Visible = True
    Me.txtOrigem.Visible = True
    Me.txtOrigem.RowSourceType = "Table/Query"
       If Me.cbnOrigDesc = 2 Then
           Me.txtOrigem.RowSource = "SELECT peqp_cdeqpto_1, peqp_descric_1 FROM public_pcpeqp WHERE peqp_descric_1 Like 'TIN*' And peqp_codbrev_1 = '002' ORDER BY peqp_cdeqpto_1;"
       ElseIf Me.cbnOrigDesc = 1 Then
           Me.txtOrigem.RowSource = "SELECT peqp_cdeqpto_1, peqp_descric_1 FROM public_pcpeqp WHERE peqp_descric_1 Like 'TAN*' And peqp_codbrev_1 = '002' ORDER BY peqp_cdeqpto_1;"
       End If
    Me.txtOrigem.Requery
    End Sub


    Confirme se o peqp_codbrev_1 é do tipo string ou numérico.

    Uma apanhado sobre filtragens no Access, clique AQUI e veja neste meu artigo.

    Aguardamos


    .................................................................................
    Quer aprender a montar ribbons ?  
    Clique AQUI e conheça o meu aplicativo.

      Data/hora atual: 25/9/2020, 06:49