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

    [Resolvido]Calculo de Variação de Peso entre Datas

    avatar
    flaviocdcastro
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 06/08/2015

    [Resolvido]Calculo de Variação de Peso entre Datas Empty [Resolvido]Calculo de Variação de Peso entre Datas

    Mensagem  flaviocdcastro em 18/8/2020, 22:19

    Caros amigos Accesseiros,

    Boa noite a todos!

    Preciso de uma ajuda com uma consulta que não consigo realizar.

    Tenho uma tabela de registro de pesos de indivíduos ao longo do tempo. Gostaria de calcular o ganho de peso entre cada uma das datas, e o ganho de peso geral (entre a primeira pesagem e a pesagem final).


    Ind_Lote Brinco_Peso Marca_Peso Data_Peso Peso_Peso
    C08 831843 CD 13/06/2020 269
    C08 831843 CD 21/07/2020 291
    C08 831843 CD 18/08/2020 318
    C08 831844 CD 13/06/2020 207
    C08 831844 CD 21/07/2020 222
    C08 831844 CD 18/08/2020 294
    C08 831845 CD 13/06/2020 292
    C08 831845 CD 21/07/2020 312
    C08 831845 CD 18/08/2020 345
    C08 831848 CD 13/06/2020 277
    C08 831848 CD 21/07/2020 326
    C08 831848 CD 18/08/2020 370
    C08 831849 CD 13/06/2020 256
    C08 831849 CD 21/07/2020 309
    C08 831849 CD 18/08/2020 341
    Consigo selecionar o último peso e o primeiro peso da tabela com o código abaixo:

    Código:

    SELECT Pesos.Marca_Peso, Pesos.Brinco_Peso, Max(Pesos.Data_Peso) AS DPF, Min(Pesos.Data_Peso) AS DPI, Individuos.Ind_Lote
    FROM Individuos INNER JOIN Pesos ON (Individuos.Num_Brinco = Pesos.Brinco_Peso) AND (Individuos.Ind_Marca = Pesos.Marca_Peso)
    GROUP BY Pesos.Brinco_Peso, Pesos.Marca_Peso, Individuos.Ind_Lote
    HAVING (((Pesos.Marca_Peso)=[Formulários]![Pesos_C4_Form]![GMD_MARCA]));

    Porém o que eu gostaria mesmo de fazer era calcular o ganho de peso para cada uma das datas onde houve pesagem.

    Alguem pode me socorrer!

    Agradeço desde já por terem me lido aqui, e se puderem ajudar, ficarei muito grato.


    Última edição por flaviocdcastro em 19/8/2020, 23:13, editado 1 vez(es)
    avatar
    caique
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 08/12/2015

    [Resolvido]Calculo de Variação de Peso entre Datas Empty Cálculo de variação de pesos

    Mensagem  caique em 19/8/2020, 16:22

    Boa tarde Flávio.

    Na sua consulta aparecem mais tabelas. Você poderia enviar?

    flaviocdcastro gosta desta mensagem

    scandinavo
    scandinavo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 812
    Registrado : 11/11/2009

    [Resolvido]Calculo de Variação de Peso entre Datas Empty Re: [Resolvido]Calculo de Variação de Peso entre Datas

    Mensagem  scandinavo em 19/8/2020, 19:26

    Veja Ai.

    Pessoal um tempo atrás fiz uma alteração no código de Plinio Mabessi que soma anterior para calcular intervalo entre datas
    e usei a mesma ideia aqui e funcionou só não sei o porque. Só alterei o argvalor na consulta. se alguém tiver um raciocínio logico para me explicar agradeço.

    Deixei as duas consultas intervalo entre as pesagem e o ganho de peso entre elas

    Function subtrairValor(argValor As Date, argFonte As String, argChave As String) As Variant

    Static strFonte As String
    Static strChave As String
    Static DataAnterior As Date

    'Se a fonte passada como argumento for diferente da
    'fonte atual ou (exclusivo) a chave for igual ? atual...
    If argFonte <> strFonte Xor strChave = argChave Then


    'Os valores ser?o zerados, pois isto
    'significa que est? iniciando um novo
    'processamento
    strFonte = 0
    strChave = argChave
    subtrairValor = 0 ' Se for a primeira data do periodo vai marcar zero

    Else
    'Sen?o realiza a opera??o normal '* Pode usar tanto uma ou a outra que vai calcular s? n?o sei o porque
    subtrairValor = DateDiff("d", DataAnterior, argValor)
    'subtrairValor = argValor - DataAnterior
    End If

    'Atualiza a vari?vel DataAnterior
    DataAnterior = argValor

    End Function
    Anexos
    [Resolvido]Calculo de Variação de Peso entre Datas AttachmentPesagemGado.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (25 Kb) Baixado 3 vez(es)

    flaviocdcastro gosta desta mensagem

    avatar
    flaviocdcastro
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 06/08/2015

    [Resolvido]Calculo de Variação de Peso entre Datas Empty Calculo de Variação de Peso entre Datas

    Mensagem  flaviocdcastro em 19/8/2020, 21:59

    Scandinavo,

    Vi aqui o arquivo e vou olhar com atenção porque sou meio Noobie em desenvolvimento.

    Assim que eu compreender direitinho eu tento adaptar e respondo.

    Obrigado cara, valeu desde já pela atenção.
    avatar
    flaviocdcastro
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 06/08/2015

    [Resolvido]Calculo de Variação de Peso entre Datas Empty Calculo de Variação de Peso entre Datas

    Mensagem  flaviocdcastro em 19/8/2020, 22:23

    Scandinavo,

    O cálculo funcionou perfeitamente para alguns individuos, porém para outros a consulta inicial trouxe a diferença com valor zero. Veja a imagem com a demarcação em amarelo. o Ganho de Peso veio com Zero 0.

    Ao clicar sobre a linha que deveria ter um valor no resultado, a consulta atualiza e traz o resultado aquele campo corretamente.

    Vc realmente matou a pau, mas to com esse probleminha. Sabes como me ajudar?

    Abs,
    Flávio
    Anexos
    [Resolvido]Calculo de Variação de Peso entre Datas AttachmentVarPeso1a.JPG
    Resultado da Consulta, traz calculos corretos e incorretos como o marcado em amarelo
    Você não tem permissão para fazer download dos arquivos anexados.
    (23 Kb) Baixado 4 vez(es)


    Última edição por flaviocdcastro em 19/8/2020, 23:09, editado 1 vez(es) (Razão : Houve um pequeno problema na execução do codigo e não consegui resolver completamente o assunto.)
    scandinavo
    scandinavo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 812
    Registrado : 11/11/2009

    [Resolvido]Calculo de Variação de Peso entre Datas Empty Re: [Resolvido]Calculo de Variação de Peso entre Datas

    Mensagem  scandinavo em 20/8/2020, 14:49

    Ola fiz uma alteração no código mas mesmo assim continua a aparecer sequencia  de zero mas sempre para a mesma linha então fiz um relatório
    que no modo de visualizar impressão não acontece o erro.


    Sou técnico em agropecuária estão pagando bem ai kkkkk.
    Anexos
    [Resolvido]Calculo de Variação de Peso entre Datas AttachmentPesagemGado.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (102 Kb) Baixado 3 vez(es)

    flaviocdcastro gosta desta mensagem

    avatar
    caique
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 08/12/2015

    [Resolvido]Calculo de Variação de Peso entre Datas Empty Variação de pesos entre datas

    Mensagem  caique em 20/8/2020, 15:48

    Bom dia Flávio.

    A única forma que conheço para resolver a leitura de registros misturando o registro anterior com o registro atual é usando VBA.

    Segue uma rotina para calcular ps pesos entre datas:

    Antes de usar a rotina é preciso criar um indíce na tabela tblPesagem para que a rotina leia a tabela a partir do primeiro Brinco e Dia.

    Segue um arquivo anexo com a imagem de como criar esse indíce.



    Sub CalcularPesos() '--- rotina a ser chamada de um botão em formulário

       Dim TabArq '--- variável que guarda a tabela
       Dim Dif As Integer '--- varável
       Dim BrincoAnterior As String '--- váriavel para guardar o Brinco da linha anterior
       Dim PesoAnterior As Integer '--- váriavel para guardar o Peso da linha anterior
       
       Dif = 0
       BrincoAnterior = 0 ' --- zera o Brinco anterior para poder ser comparado no IF seguinte
       PesoAnterior = 0 ' --- zera o PesoAnterior para ser usado na primeira ocorrência de um novo brinco
       
       Set TabArq = CurrentDb.OpenRecordset("tblPesagem")
           
       TabArq.Index = "PrimaryKey"        '--- índice da tabela tblPesagem com o campo "Brinco" e "Dia" em ordem crescentes
           
       With TabArq '   --- comando para evitar escrever "TabArq" toda vez
       
       .MoveFirst 'move o pointer de tabelas para o primeiro registro === dica para ter certeza que a rotina vai usar o primeiro registro em ordem do indíce (Brinco, Dia)
       .MoveLast 'move o pointer de tabelas para o último registro === dica para ter certeza que a rotina vai usar todos os registros
       .MoveFirst 'move o pointer de tabelas para o primeiro registro === dica para ter certeza que a rotina vai usar o primeiro registro em ordem do indíce (Brinco, Dia)
       
       While Not .EOF '-- comando para iniciar a leitura dos registros até o último
       
           If !Brinco = BrincoAnterior Then ' pergunta se o o Brinco da linha atual é o mesmo da linha anterior
               .Edit '---- edita o registro
                   !Variação = Nz(!Peso) - PesoAnterior '---se for igual calcula a diferença de pesos entre as duas datas
               .Update '--- salva o registro alterado
           Else
               .Edit
               !Variação = 0 '--- guarda o valor zero pois é o primeiro brinco dessa linha
               .Update
           End If
           
           BrincoAnterior = !Brinco '--- guarda o Brinco atual para comparar na próxima linha a ser lida
           PesoAnterior = !Peso '--- guarda o Peso atual para comparar na próxima linha a ser lida
                   
           .MoveNext '--- move para o próximo registro
       Wend
       End With '---- fim do With
       
       TabArq.Close '--- recomendável fechar todos as tabelas abertas antes de finalizar
       
       MsgBox "Cálculos efetuados com sucesso!"
       
    End Sub
    Anexos
    [Resolvido]Calculo de Variação de Peso entre Datas AttachmentIndice_tbPesagem.jpg
    Você não tem permissão para fazer download dos arquivos anexados.
    (54 Kb) Baixado 4 vez(es)
    avatar
    flaviocdcastro
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 06/08/2015

    [Resolvido]Calculo de Variação de Peso entre Datas Empty Re: [Resolvido]Calculo de Variação de Peso entre Datas

    Mensagem  flaviocdcastro em 17/9/2020, 12:56

    Scandinavo resolveu tudo!

    Fiz algumas modificações e vou postar aqui o novo codigo. Inclui opções de calculo de diferenças de valores, dias e outras opções.

      Data/hora atual: 28/10/2020, 08:33