Pessoal,
Por favor, peço a ajuda de vocês em relação a uma questão que estou tentando resolver. Já tentei de diversos modos, alcançando resultados parciais, mas nada que possa ser utilizado de forma definitiva, por conta de algumas inconsistências que não consegui resolver.
Tenho uma planilha em que o usuário digita um valor - valor que está disponível para pagamento; com base nesse valor, a programação precisa verificar no banco de dados quais são os processos que somados chegam mais próximo possível do valor digitado pelo usuário. Na programação que fiz, verificava linha a linha, de acordo com determinados critérios (Nome do cliente e verificação se o processo ainda não foi pago - através da data) e, a medida que fosse encontrando os critérios, o valor do processo era somado em uma variável. Quando chegasse mais próximo do número digitado pelo usuário, a programação terminaria, informando quais são os processos que devem ser pagos e quais são os seus respectivos valores, tal como o total mais próximo, de acordo com uma margem pré-definida, que ia aumentando quando o contador (que correspondia ao número total de processos do cliente) chegava ao fim.
A programação funcionou em grande parte dos casos, mas me deparei com um problema: em grande parte das vezes, a programação trazia uma soma de processos mais distante do número definido pelo usuário do que poderia, tendo em vista que o cursor sempre seleciona do primeiro ao último. Por exemplo: o cliente possui 4 processos em aberto, com os respectivos valores: 4 / 5 / 8 / 2 - supondo que a margem definida foi de 1. Ou seja, a programação traria os dois primeiros: 4 e 5 =9, mas o melhor resultado seria o 8 e 2 = 10. Enfim, essa situação está em uma escala mínima, tendo em vista que o banco de dados real possui mais de 5000 linhas.
Em anexo, estou enviando um arquivo apenas com alguns exemplos das informações que são utilizadas, sem o código inicial que eu havia feito, pois de tanto alterá-lo para tentar melhorá-lo acabei fazendo com que não funcionasse mais.
Enfim, se alguém tiver alguma sugestão em relação a esse caso, agradeço!
Abs,
Fábio
Postado : 18/11/2015 12:42 pm