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

    [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições.

    avatar
    Wilton Moreira J
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 18/04/2017

    [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições. Empty [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições.

    Mensagem  Wilton Moreira J Qui Abr 20, 2017 1:14 am

    Preciso de ajuda para preencher o campo de uma tabela automaticamente baseado em 3 condições.
    Tenho na tabela Tb_Contas três campos, [Data do Vencimento], [Data do Pagamento] e [Status]
    Quero que o campo [Status] seja preenchido automaticamente como PAGO, PENDENTE ou ATRASADO.
    As condições são simples.
    Se a [Data do Pagamento] não for nula é PAGO;
    Se a [Data do Vencimento] for menor que a data de hoje e a [Data do Pagamento] for nula é ATRASADA
    Se a [Data do Vencimento] for maior ou igual que a data de hoje e a [Data do Pagamento] for nula é PENDENTE
    Queria colocar essa condição direto na tabela pois vou precisar deste campo preenchido com essa informação para outras consultas.
    Alguém pode me ajudar com esse problema.
    biligo
    biligo
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 226
    Registrado : 10/04/2014

    [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições. Empty Re: [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições.

    Mensagem  biligo Qui Abr 20, 2017 2:48 am

    Boas man,

    Sugiro que estude um pouco sobre consultas atualização. Acho que é a melhor opção para o seu caso.
    Verifique que sempre sera dada a atualização até que seja PAGO
    Segue um exemplo veja se é o que deseja.
    Anexos
    [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições. AttachmentExemplo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (20 Kb) Baixado 12 vez(es)
    avatar
    Wilton Moreira J
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 18/04/2017

    [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições. Empty Re: [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições.

    Mensagem  Wilton Moreira J Qui Abr 20, 2017 12:29 pm

    Bom dia amigo,
    Primeiramente gostaria de agradecer pela ajuda.
    Adicionei sua consulta em meu BD.
    No Formulário Fm_Contas, onde entro com novos dados, coloquei uma Macro no botão Salvar que abre a sua consulta.
    Funcionou perfeitamente para o cadastro de novas contas.
    Mas ainda está dando erro.
    Esse cadastro é feito em duas etapas.
    Na primeira etapa, uso o formulário Fm_Contas, para incluir um novo registro com a data de vencimento.
    No dia que essa conta for paga, entro no outro formulário Fo_Co_Contas_Código que é baseada em uma consulta pelo código para mostrar os dados da conta que quero informar o pagamento ou alterar algum dado.
    Quando lanço a data do pagamento o campo Status atualiza perfeitamente.
    Aí tentei fazer um teste. Tirei a data de pagamento e mudei a data de vencimento para o campo ficar atrasado e salvei, mas ele continuou pendente e não atualizou.
    Veja o BD em anexo. Será que a consulta deveria estar em outro local ou acionada de outra maneira?
    Anexos
    [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições. AttachmentNOTA 10.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (536 Kb) Baixado 5 vez(es)
    biligo
    biligo
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 226
    Registrado : 10/04/2014

    [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições. Empty Re: [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições.

    Mensagem  biligo Qui Abr 20, 2017 11:13 pm

    Boas,

    A questão é a seguinte.
    Lhe aconselhei consultas atualização pois no caso de "Status" ele deve ser atualizado independente da visualização do registro, ou seja, você não irá precisar verificar registro por registro para ser atualizado o Status.
    O problema de uma consulta de atualização é que ele verifica "todos os campos da tabela a ser atualizada". Depois de um tempo essa consulta irá demorar muito para verificar todos os registros, então para não percorrer todos
    todas as vezes colocamos critérios. Essa consulta só ira verificar os Status que estão marcados como "ATRASADO" Ou "PENDENTE" Ou É Nulo.

    No seu teste você efetuou o pagamento deixando o status como PAGO então a consulta não ira mais verificar este registro mesmo sem as datas de pagamento ou vencimento.
    Caso queira algo mais simples para verificar registro por registro utilize uma condição vba, a diferença é que este só ira verificar o registro atual.

    Código:
    Function AtualizaStatus()

    If IsNull(Me.Pagamento) Then
        If Me.Vencimento < Now() Then
            Me.Status = "ATRASADO"
        Else
            Me.Status = "PENDENTE"
        End If
    Else
        Me.Status = "PAGO"
    End If

        DoCmd.RefreshRecord
       
    End Function

    E nos campos Pagamento e Vencimento coloque o seguinte em após atualizar: =AtualizaStatus()
    Remova também a macro que ira chamar a consulta atualização.

    Não descarte essa consulta atualização, mais para frente verá que ira necessitar dela.
    Para chamá-la utilize o seguinte:

    DoCmd.SetWarnings False 'Oculta os avisos do access
    DoCmd.OpenQuery "Nome da consulta atualização"
    DoCmd.SetWarnings True ' Reexibe os avisos

    Também sou iniciante então não sei nada sobre macro mas prefiro utilizar vba.
    avatar
    Wilton Moreira J
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 18/04/2017

    [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições. Empty Re: [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições.

    Mensagem  Wilton Moreira J Sex Abr 21, 2017 12:59 am

    Este código corrigiu o campo Status do Formulário, mas não está incluindo este registro no campo Status na tabela.
    biligo
    biligo
    Avançado
    Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 226
    Registrado : 10/04/2014

    [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições. Empty Re: [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições.

    Mensagem  biligo Sex Abr 21, 2017 8:53 am

    Provavelmente esta dando divergência com o nome do campo do formulário. Altere o nome dos campos, particularmente eu quando adiciono um campo texto em um formulário acrescento apenas txt no inicio do nome.
    Facilita para localizar o campo em qualquer formulário, padronizar os nomes dos campos nas tabelas também ajuda, e não espaçar nomes ou adicionar caracteres poderá diminuir erros em comandos.
    avatar
    Wilton Moreira J
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 18/04/2017

    [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições. Empty Re: [Resolvido]Preencher o campo de uma tabela automaticamente baseado em 3 condições.

    Mensagem  Wilton Moreira J Sab Abr 29, 2017 9:18 am

    Consegui resolver o problema com a ajuda de um amigo.
    Ele alterou a logica do comando e agora as datas podem ser alteradas que o status altera também sem ficar aquele erro.

    Function AtualizaStatus()


    If IsNull(Me.Pagamento) = False Then
    Me.Status = "PAGO"
    ElseIf IsNull(Me.Pagamento) = True And Me.Vencimento > Date Or Me.Vencimento = Date Then
    Me.Status = "PENDENTE"
    ElseIf IsNull(Me.Pagamento) = True And Me.Vencimento < Date Then
    Me.Status = "ATRASADO"
    End If

    End Function

      Data/hora atual: Qua Jun 16, 2021 6:07 pm