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


    Registro do último odômetro se repetindo

    avatar
    AMarcos
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 162
    Registrado : 26/07/2016

    Registro do último odômetro se repetindo Empty Registro do último odômetro se repetindo

    Mensagem  AMarcos em 5/10/2019, 19:52

    Caros amigos e mestres, eu estou com um probleminha mo meu Formulário de Abastecimento. Nele existe um código onde todas as vezes em vou registrar um novo abastecimento, no campo "Último_Odom" puxa automaticamente a informação do abastecimento anterior. Isso acontece com cada veículo no momento do novo registro:

    Código:
    Private Sub Form_Current()
       If Me.NewRecord Then
           Me.Ultimo_Abast = 0
       Else
           Me.Ultimo_Abast = DLast("Odom_Abast", "Abastecimento", "Viaturas ='" & comb_VtrAbast & "' AND Nr_Reg<" & Me.Nr_Reg)
       End If
    End Sub

    Só que de uns tempos para cá estou me deparando com os registros de último abastecimento se repetindo, sem informar o registro real que seria sempre o último abastecido.  Isso está influenciando e muito no cáculo da autonomia do veículo, pois está sempre subtraindo o valor do odômetro atual com o odômetro repetido.

    Registro do último odômetro se repetindo Rel_ab12

    Da última vez fui buscando realizando os lançamentos tudo de novo do ponto de onde  começava a se repetir e pude observar que coincidência ou não era a partir do momento onde o usuário cometia erros de lançamentos, como por exemplo num mesmo veículo onde já registrava abastecimento com mais de 20.000 Km, o usuário  lançava outro totalmente diferente que não obedecia a sequência crescente dos odômetros de acordo com o avanço das datas dos abastecimentos.
    Mas agora não dá pra ir fazendo sempre, de um a um, a medida que o BD aumenta de nº de registros...

    Será que os mestres tem alguma solução para esse problema? Será que falta agum tratamento no código para evitar que isso aconteça?

    Abaixo segue o extrato do BD para visualização e correção se necessário.

    Att,


    AMarcos
    Anexos
    Registro do último odômetro se repetindo AttachmentERROR_Abastecimento.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (248 Kb) Baixado 9 vez(es)


    Última edição por AMarcos em 10/10/2019, 00:33, editado 1 vez(es)
    avatar
    AMarcos
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 162
    Registrado : 26/07/2016

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  AMarcos em 8/10/2019, 20:16

    Senhores amigos e mestres, o que está acontecendo resumidamente é que o campo "ultimo_odom" que recebe o valor do campo "odom_atual" do último registro de abastecimento do veículo (viatura) está se repetindo a partir de uma determinada data que eu não consigo saber o porquê e nem como corrigir para que isso não aconteça.
    Muito provavelmente tal repetição acontece por ação do usuário. Será que existe algum Tratamento que se evite essa repetição?

    Att,


    AMarcos
    avatar
    AMarcos
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 162
    Registrado : 26/07/2016

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  AMarcos em 10/10/2019, 04:35

    Na foto mostra a repetição acontecendo: ao invés de registrar no campo "ultimo_odom" dos dois últimos registros assinalados 7322 e 7694, respectivamente, fica repetindo o numero 7083.

    Por que será que isso acontece???


    AMarcos
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 945
    Registrado : 01/03/2014

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  Celso Roberto em 10/10/2019, 04:50

    Olá..

    Informe o passo a passo para gerar o relatório com esse erro

    Aguardo


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    avatar
    AMarcos
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 162
    Registrado : 26/07/2016

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  AMarcos em 10/10/2019, 17:07

    Vamos lá!

    O usuário localiza a viatura em que irá lançar o abastecimento, informa os dados referente ao abastecimento, exigidos no formulário, com exceção da informação do campo "Ultimo_Odom", porque para se evitar equívocos no sequencial de abastecimentos, o programa puxa automaticamente (DLast) a informação do campo "Odom_Atual" lançado no último registro daquela viatura.

    Feito isso, salva as informações depois é só clicar no botão "Visualizar relatório" que aparecerá um Form de Pesquisa para que seja dado a opção de gerar relatório de todas as viaturas ou de uma em particular dentro de um período de tempo (DataIni e DataFim) e depois dar um "enter" para habilitar o botão "Visualizar" e clicar nele para gerar o documento com todos os registros lançados.

    Acontece que estou recebendo reclamações do usuário por estar acontecendo repetições neste campo automático, onde ele, usuário, não tem acesso para digitar, a não ser quando lança no campo "Odom_Atual" do registro anterior de uma determinada viatura, onde o programa irá preencher o próximo registro o campo "Ultimo_Odom".

    Ou seja, a informação no campo "Odom_Atual" de uma viatura vira a informação no campo "Ultimo_Odom" no próximo registro de abastecimento daquela viatura. E por algum motivo, em algum momento essa troca de valores para de acontecer e o programa fica repetindo um mesmo valor, mesmo o usuário lançando uma informação nova no campo "Odom_Atual".

    Tentei ser o mais detalhista na minha redação. Aguardo ancioso por sua ajuda meu amigo, nem que seja necessário mudar o código utilizado para conseguir êxito.

    Um abraço,


    AMarcos
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 945
    Registrado : 01/03/2014

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  Celso Roberto em 10/10/2019, 19:53

    Olá..

    Se este exemplo que anexou é o que esta em uso, realmente pode ocorrer muitos erros de salvar registros com erros.

    Em anexo esta uma alteração básica com algumas alterações.

    Faça teste e veja se atende


    Aguardamos retorno

    Abraços
    Anexos
    Registro do último odômetro se repetindo AttachmentERROR_Abastecimento_Alterado.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (194 Kb) Baixado 12 vez(es)


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    avatar
    AMarcos
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 162
    Registrado : 26/07/2016

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  AMarcos em 11/10/2019, 14:21

    Amigo Celso bom dia!!!

    Verifiquei ontem aqui a alteração realizada por ti, e deu pra perceber que houve uma preocupação de se evitar tais erros provocados pelo usuário.

    Neste fim de semana irei ficar realizando testes para conferir se tudo dará certo e pra poder lhe dar um feedback, e também ao fórum, do resultado obtido.

    Tenho quase a certeza que tudo dará certo!!!

    Desde já agradeço a toda atenção dispensada.

    Att,


    AMarcos
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 945
    Registrado : 01/03/2014

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  Celso Roberto em 12/10/2019, 17:10

    Olá..

    Lembrando que é um exemplo básico, precisa melhorar no aspecto de segurança, como exemplo bloquear após salvar para que o usuario não altere a combobox e salve novamente com as informações existentes, etc..

    Aguardamos

    Abraços


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    avatar
    AMarcos
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 162
    Registrado : 26/07/2016

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  AMarcos em 15/10/2019, 12:45

    Bom dia!!! Como seria esse bloqueio?

    Vc diz que seria possível bloquear os formulários depois de salvos? Seria ótimo

    Att,


    AMarcos
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 945
    Registrado : 01/03/2014

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  Celso Roberto em 15/10/2019, 18:31

    Olá..

    Vou dar alguns exemplos básicos que eu utilizaria neste caso:

    1- Alteraria o evento após atualizar da comb_VtrAbast para este código abaixo para que se o usuario preenchesse o formulario e antes de salvar alterasse a combobox, limparia os dados digitados e busque o nova viatura selecionada.
    Código:
    Private Sub comb_VtrAbast_AfterUpdate()
         
        'Limpa Campos
        Me.Data = ""
        Me.comb_CotaOM = ""
        Me.comb_Marcador = ""
        Me.Novo_Abast = ""
        Me.comb_Posto = ""
        Me.Litros = ""
        Me.Combustivel = ""
        Me.comb_Motorista = ""
        Me.txt_Autorizado = ""
        Me.Cod_Segurança = ""
           
      'Me.Ultimo_Abast = DMax("Odom_Abast", "Abastecimento", "Viaturas='" & Me.comb_VtrAbast & "'") 'Busca o maior valor de abastc. ref a viatura
        Me.Ultimo_Abast = DLast("Odom_Abast", "Abastecimento", "Viaturas='" & Me.comb_VtrAbast & "'") 'Busca o ultimo lançto de abastc. ref a viatura
        Me.txt_Viatura = Me.comb_VtrAbast
       
    End Sub



    2- No evento atual do formulario, usaria este código para que se ao navegar pelos registros e exista dados no formulário o usuário não consiga alterar sem autorização.

    Código:
    Private Sub Form_Current()
        If Not IsNull(Me.txt_Viatura) Or Me.txt_Viatura <> "" Then
            Me.Form.AllowEdits = False
        Else
            Me.Form.AllowEdits = True
        End If
    End Sub



    3- No Botão salvar usuaria este, para que ao salvar bloqueie o formulario para alteração sem autorização.

    Código:
    Private Sub btn_Salvar_Click()
        DoCmd.RunCommand acCmdSaveRecord
        MsgBox "Registro salvo com Sucesso!", vbExclamation + vbOKOnly + vbDefaultButton1, "Aviso"
        Me.Refresh
        Me.Form.AllowEdits = False
    End Sub


    4- Criaria um novo Botão e nomearia como btnEditar e usaria este código para liberar o formulário para edição.

    Código:
    Private Sub btnEditar_Click()
        Me.Form.AllowEdits = True
    End Sub

    Procure por novas possibilidades de o usuário usar de forma errada e encontre maneiras de evita-las

    Aguardamos retorno

    Abraços






    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    avatar
    AMarcos
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 162
    Registrado : 26/07/2016

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  AMarcos Ontem à(s) 15:28

    Amigo Celso bom dia!

    Seguindo sua orientação estou implementando código que evite de alguma forma que o usuário ao navegar pelos registros provoque algum erro que vá danificar a lógica do programa.

    Mas observei que se o usuário não inserir as informações respeitando a ordem cronológica, o programa puxa o último_odom do último registro independente da data de abastecimento.  Vou tentar ser mais claro:

    No início da semana o usuário começa a realizar os abastecimentos realizados. Ele lança a viatura X com o abastecimento realizado em 14/10/2019  com odom atual de 15000 Km. O Sistema puxa o ultimo registro realizado em 12/10/2019 e coloca em ultimo_odom o valor de 14900 Km. Até aí td bem...
    Mas ele se surpreende com um lançamento não realizado de uma abastecimento no mês passado.  Daí ele clica em novo e começa a digitar os dados do abastecimento atrasado: escolhe a Vtr, o programa puxa o ultimo odom lançado que foi 15000 Km no dia 14/10/2019, mas acontece que os dados desse abastecimento é de 07/09/2019 e com um odom de 13800Km, pronto está gerado o caos...
    Sei que o programa não irá permitir um odom atual menor que o ultimo odom, no caso 13800<15000, mas não seria interessante o programa ao invés de puxar o odom do último registro de abastecimento de uma determinada viatura, não seria mais correto puxar o odom de abastecimento daquela viatura anterior ao valor digitado no campo Data.
    Ou seja, um duplo filtro, pela viatura e também pela data de abastecimento, e daí os lançamento ficariam ordenados além da data, mas também por odom... pq se calhar de acontecer um equívoco na informação e o odom atender ao critério de ser maior que o anterior o programa vai aceitar e aparecer registros errados em relatórios.

    Não sei se me fiz entender...

    Estou tentando agir nesse código:

    Me.Ultimo_Abast = DLast("Odom_Abast", "Abastecimento", "Viaturas='" & Me.comb_VtrAbast & "'") 'Busca o ultimo lançto de abastc. ref a viatura


    Se puder me ajudar fico grato!

    AMarcos
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 945
    Registrado : 01/03/2014

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  Celso Roberto Ontem à(s) 22:42

    Olá..

    Se isso acontecer será um problema grave, porque todos os registros subsequentes a esta data retroativa estara errado.

    terá que efetuar a correção de todos para que o lançto atual fique na normalidade.

    IMPORTANTE: corrija o nome do campo Data na tabela abastecimento para DataAbast e no formulario para DtDataAbast

    Evite usar nomes como Data, nome porque são Reservado ao access e pode gerar conflito em códigos

    Para buscar o ultimo Odom_Abast ref a uma data retroativa teste este abaixo no evento após atualizar a data no formulário

    Código:
    Private Sub DtDataAbast_AfterUpdate()
    If Me.DtDataAbast < DLast("DataAbast", "Abastecimento", "Viaturas='" & Me.comb_VtrAbast & "'") Then 'Busca o ultimo lançto de abastc. ref a viatura
    MsgBox "Data de Lancto " & Space(2) & " " & Me!DtDataAbast & " é menor ou igual a data registrada como ultima data de Lancto", vbInformation, "Informação"
    Me.Ultimo_Abast = DLast("Odom_Abast", "Abastecimento", "Viaturas='" & Me.comb_VtrAbast & "' And [DataAbast] <= #" & Format(Me.DtDataAbast, "mm/dd/yyyy") & "# ") 'Busca o ultimo lançto de abastc. ref a viatura
    End If

    End Sub

    No código já esta com os nomes dos campos alterados como solicitei acima

    Aguardo retorno

    Abraços


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....

    Conteúdo patrocinado

    Registro do último odômetro se repetindo Empty Re: Registro do último odômetro se repetindo

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 24/10/2019, 03:19