MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Truncar valores calculado

    Compartilhe

    AdilsonSantos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 30/07/2016

    Truncar valores calculado

    Mensagem  AdilsonSantos em Sab 30 Jul 2016, 23:55

    Senhores, boa noite,

    Estou com a seguinte duvida referente a truncar resultado de valores por linha e somatorio total de um pedido;

    Seria um tamburete de dados como um controle de estoque que solicito um pedido e esse pedido tem que calcular por linha cada registro e o somatorio total do pedido truncando o valor moeda para duas casas decimais:
    pequeno exemplo: ( mas a lista pode ter mais de 50 itens )
    produto: quantidade x preço
    pimentao: 0,12x3,99 = 0,4788 apresentar resultado ( truncar ) 0,47
    vermelho: 0,685*1,69 = 1,15765 apresentar resultado ( truncar ) 1,15

    total do pedido ( truncado ): 1,62
    porém ao utilizar a função truncc(x) do site da microsoft para total linha consigo utilizar a função e exibir o resultado truncado mas o resultado do total do pedido nao funciona a função e exibe sempre o resultado 1,63 ( nao truncado );

    se ja resolveram uma questao parecida qual item do forum
    obrigado,
    Adilson


    bom dia, vou editar o topico para acrescentar mais detalhes;

    Nesse banco tem a tabela pedidos, detalhepedidos ( entre outras cliente, fornecedor, etc );
    o calculo da quantidade x preço unitario esta sendo feito numa consulta chamada detalhesdopedido;

    o calculo do total do pedido ( somatorio de todas as linhas do pedido ) esta sendo feito no rodapé do subformulario detalhe pedido;

    A função inscrita em um modulo chamado truncar citada como truncc(x) transcrevo abaixo:
    O factor = 100 ( significa truncar com 2 casas decimais )


    Option Compare Database

      '******************************************************
      ' Declarao da seção do modulo
      '******************************************************

      Option Explicit
      Const Factor = 100

      Function TruncCC(X)
         TruncCC = Int(X * Factor) / Factor
      End Function


    Acho que agora consegui fazer entender minha duvida;

    No excel é simples utilizo apenas a funcao truncar e pronto, mas no access 2013 tem esse dificultador pois para exibir numa linha há o truncamento mas o access para fazer o somatorio usa todas as casas decimais para totalizar;

    Alguma solução ?

    Aceito sugestao para usar outra função ao inves da truncCC pois com essa função o calculo do pedido e do total linha ficam mais lentos;

    obrigado,

    Adilson

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3206
    Registrado : 15/03/2013

    Re: Truncar valores calculado

    Mensagem  ahteixeira em Seg 01 Ago 2016, 23:42

    Olá, bem vindo ao fórum.
    Mostre como tem a origem da linha que mostra o resultado.

    Acho que pode usar diretamente.

    Teste  exemplo:

    = Int((quantidade * preco) * 100) / 100

    Abraço


    Última edição por ahteixeira em Ter 02 Ago 2016, 11:19, editado 1 vez(es)

    AdilsonSantos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 30/07/2016

    Re: Truncar valores calculado

    Mensagem  AdilsonSantos em Ter 02 Ago 2016, 01:11

    ahteixeira, Obrigado,

    Segue anexo tela copiada do access colada no word com esboço das explicações citadas na pergunta;

    Tela do pedido calculada com e sem truncamento de 2 casas decimais;

    E origem do calculo na consulta ( multiplicação da quantidade do pedido pelo preço unitario do pedido );

    Adilson
    Anexos
    Truncar 2 casas decimais.doc
    Arquivo word anexo
    Você não tem permissão para fazer download dos arquivos anexados.
    (417 Kb) Baixado 3 vez(es)

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3206
    Registrado : 15/03/2013

    Re: Truncar valores calculado

    Mensagem  ahteixeira em Ter 02 Ago 2016, 11:16

    Olá Adilson Santos,
    Com base no que disponibilizou, fiz o teste do que referi na mensagem n.º 2, veja o resultado:
    [Você precisa estar registrado e conectado para ver esta imagem.]


    Segue abaixo a linha para testar na sua consulta e verificar se fica mais rápido diretamente:
    Código:
    TOTAL: Int(([TDetalhePedidos].[Quantidade]*[TDetalhePedidos].[PrecoPRoduto])*100)/100
    Abraço

    AdilsonSantos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 30/07/2016

    Re: Truncar valores calculado

    Mensagem  AdilsonSantos em Ter 02 Ago 2016, 12:07

    ahteixeira, bom dia,

    Com a função "int" citada acontece o truncamento porém de todas casas decimais, eu preciso do truncamento a partir da 3 casa decimal. ou seja truncar com 2 digitos.

    copiei e anexei abaixo a tela do access copiado no word com a nova função integrada no banco mas o resultado foi o truncamento;

    Veja que usando a função truncCC o somatorio por linha / registro acontece o truncamento com as duas casas decimais ( desprezando o terceiro digito em diante ), porém no somatorio do pedido o access desconsidera que estou somando o total do pedido apenas com as casas decimais truncada.

    Ele faz o somatorio considerando todas as casas decimais independentemente de ter um campo truncado a partir do terceiro digito.

    Veja se ficou claro,

    novamente obrigado,

    Adilson
    Anexos
    forum1.doc
    Você não tem permissão para fazer download dos arquivos anexados.
    (376 Kb) Baixado 3 vez(es)

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3206
    Registrado : 15/03/2013

    Re: Truncar valores calculado

    Mensagem  ahteixeira em Ter 02 Ago 2016, 15:41

    Olá Adilson Santos,
    Verifique melhor, você não colocou na consulta o que postei na mensagem n.º 4, falta a parte a vermelho, veja:
    [Você precisa estar registrado e conectado para ver esta imagem.]

    Abraço

    AdilsonSantos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 30/07/2016

    Re: Truncar valores calculado

    Mensagem  AdilsonSantos em Qua 03 Ago 2016, 01:50

    Ola ahteixeira,

    Realmente, falha minha, ao invés de copiar e colar da sua mensagem fui digitar e esqueci de digitar a função inteira;

    Perfeito solucionou o problema chegou no resultado que eu esperava;

    parabéns e obrigado novamente,

    Antes de fechar o topico para esta solução, percebi que o calculo do soma total do pedido que utilizei no formulário a exibição do resultado ficou mais lenta isto é devido ao fato de eu ter usado o somatorio no formuláro ao inves de usar o somatório na consulta ?

    Ou seja os dois campos do calculo total que foi utilizado as funções ( truncCC e Int ) a exibição do resultado levou alguns milésimos de segundo a mais antes de aparecer na tela, essa demora é devido ao uso dessas funções ?

    Ha como eliminar esse atraso na exibição ? ( se considerar um micro com 8GB de RAM processador core i7, HD solid, placa de video 128gb, etc ... fica quase imperceptível mas num micro mais modesto a exibição demora um tempo considerado;

    obrigado,

    Adilson


    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3206
    Registrado : 15/03/2013

    Re: Truncar valores calculado

    Mensagem  ahteixeira em Qui 04 Ago 2016, 12:05

    Olá Adilson Santos,
    Obrigado pelo retorno.

    Quanto às características da máquina é indiscutível a performance, ainda mais com um disco SSD.
    Relativamente à exibição do resultado, uma vez que está já arredondar na linha acho que seria suficiente apenas a soma do campo listado.

    Quanto à performance, desconheço a estrutura de dados do seu projecto, mas uma alternativa seria:

    Ter na tabela o campo do total da linha (quantidade X preço) que seria gravado na tabela já arredondado.
    Ao listar, já não era necessário o arredondamento.
    O que acha?

    Fica a minha opinião.
    Abraço



    AdilsonSantos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 30/07/2016

    Re: Truncar valores calculado

    Mensagem  AdilsonSantos em Qui 11 Ago 2016, 12:54

    Ola ahteixeira,

    Realmente a dica é bastante util ja tenho na tabela o campo calculado, mesmo assim leva alguns milésimos de segundo para exibir mas esta aceitável.

    Outra duvida que tenho é referente a função que utilizei truncCC orientada no site technet e por outros foruns que pesquisei, voce ja utilizou esta função ? Por que ela nao atende ao somatorio total da forma prevista ?

    Fica ai mais esta curiosidade,

    obrigado,

    Adilson

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3206
    Registrado : 15/03/2013

    Re: Truncar valores calculado

    Mensagem  ahteixeira em Qui 11 Ago 2016, 13:09

    Olá Adilson, obrigado pelo retorno.

    A ajuda foi a possível com base na função que postou.
    O desempenho depende de vários fatores (numero registos, complexidade de relacionamentos, rede ou não, etc).
    Por vezes no desenvolvimento pode existir formas para aumentar a performance.

    Para ajudar melhor, recomendo que crie uma base de dados com os objectos necessários e dados (de amostragem) e partilhe aqui no fórum.
    Só assim é que será possivel compreender melhor o que tem para poder ajudar.
    Assim também fica mais fácil para outros membros analisar e poder ajudar.
    Abraço

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3206
    Registrado : 15/03/2013

    Re: Truncar valores calculado

    Mensagem  ahteixeira em Sab 10 Set 2016, 00:14

    Olá Adilson Santos,
    Como ficou a situação, os utilizadores agradecem e merecem o retorno.
    Abraço

    AdilsonSantos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 30/07/2016

    Re: Truncar valores calculado

    Mensagem  AdilsonSantos em Sab 10 Set 2016, 14:31

    ahteixeira, bom dia,

    Realmente resolveu o problema do truncamento de valores, estou usando o a tabela access para analisar o que os supermercados vem utilizando como método de arredondamento nas compras que efetuo.
    Identifiquei que nem todos supermercados truncam os valores e utilizam o recurso de arredondamento as vezes sem critérios.

    você acha que devo fechar o tópico ?

    novamente obrigado pelo retorno,

    Adilson

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3206
    Registrado : 15/03/2013

    Re: Truncar valores calculado

    Mensagem  ahteixeira em Sab 10 Set 2016, 16:12

    Olá, se a questão que colocou foi resolvida acho que deve dar o tópico por concluído.
    Não devemos misturar temas no mesmo tópico.
    A questão do arredondamento deve tirar a dúvida com quem vai usar o seu programa.

    Se o seu programa é para venda a vários clientes e já verificou que existe vários tipos de arredondamento, deverá fazer de forma a ser configurável.
    Assim o mesmo programa pode dar para vários tipos de clientes.
    Fica a dica, e não se esqueça não misture temas nos tópicos, abra um novo se não existir nenhum.
    Abraço

      Data/hora atual: Seg 05 Dez 2016, 04:25