Jump to content

Archived

This topic is now archived and is closed to further replies.

tjlopes

Cotação menor preço

Recommended Posts

Tenho um sistema de compras onde o usuário escolhe n produtos para n fornecedores com varios preços e digita o preço de cada produto para cada fornecedor ele precisa de um relatório com os produtos com o menor preço e seu respectivo fornecedor. Algúem sabe como eu posso fazer isso?Por ExemploFornecedor Medicamento Quantidade Valor ValorTotal---------------------------------------------------------------------------1 Novalgina 2 13 262 Novalgina 2 10 203 Novalgina 2 9 181 AAS 12 2 242 AAS 12 4 483 AAS 12 3 261 Arcoxia 10 20 2002 Arcoxia 10 23 2303 Arcoxia 10 18 180Pra ficar mais fácil de entender eu teria que receber no exemplo abaixo a seguinte estruturaFornecedor Medicamento Quantidade Valor ValorTotal---------------------------------------------------------------------------3 Novalgina 2 9 181 AAS 12 2 243 Arcoxia 10 18 180

Share this post


Link to post
Share on other sites

Primeiramente nos diga algumas informações:- Qual a base de dados utilizada???- Qual a forma de acesso??? (BDE, ADO, DBExprees...)- Como está a sua estrutura de tabelas???

Share this post


Link to post
Share on other sites

Até agora eu não consegui nada. Eu estou a 3 dias quebrando cabeça com isso. Mas se você souber como fazer isso utilizando outro banco de dados pra mim tá ótimo. Ainda dá tempo de mudar.

Share this post


Link to post
Share on other sites

Estava pensando em fazer algo do tipo:

 

Select Fornecedor, Medicamento, Quantidade, Valor, ValorTotalFrom Tabela1Where ValorTotal = (Select Min(ValorTotal) From Tabela1 as Aux Where Aux.Medicamento = Tabela1.Medicamento)

PS.: O Paradox não aceita isso... ai você teria que ver uma nova forma de adaptar isso ao seu caso...

Share this post


Link to post
Share on other sites

Funcionou em parte porque ele está pegando só o menor medicamento da lista e eu preciso o menor de cada grupo de medicamento. Eu preciso de um resultado igual a da estrutura que eu mostrei acima.

Share this post


Link to post
Share on other sites

Tente fazer a restrição no próprio select:

 

Select Fornecedor, Medicamento, min(Valor) as Valor, min(ValorTotal) as ValorTotalFrom Tabela1group by Fornecedor, Medicamento

Somente seu campo quantidade não poderia estar no seu comando SQL, pode estar somente se estiver fazendo um SUM

Share this post


Link to post
Share on other sites

É gente tá difícil. O problema todo é que eu não posso ter duplicação de produtos. Por exemplo: se eu tenho três preços diferentes de novalgina eu só posso pegar a que tiver menor preço. E é isso que eu não tô conseguindo.

Share this post


Link to post
Share on other sites

Um idéia que me eram em outro fórum é, depois de ter executado o comando sql, jogar o resultado obtido em outro dataset e fazer uma comparação produto a produto e excluir o maior deles. O problema é eu não sei fazer essa comparação.

Share this post


Link to post
Share on other sites

ele tá mostrando algo como:Fornecedor Medicamento Quantidade Valor ValorTotal---------------------------------------------------------------------------1 Novalgina 2 13 261 AAS 12 2 181 Arcoxia 10 20 2002 Novalgina 2 10 202 AAS 12 4 482 Arcoxia 10 23 230 3 Novalgina 2 9 183 AAS 12 3 263 Arcoxia 10 18 180

Share this post


Link to post
Share on other sites

Pelo visto a mais simples com o Paradox seria ter uma tabela temporária ou algo do tipo, onde que iria listar todos e ficar verificando o menos e carregando nesta tabela...

Share this post


Link to post
Share on other sites

No SQLServer teria como sim, pois consegue criar tabela temporárias e tudo mais sem stress, mas agora não sei se fica interessante mudar de banco por causa de um relatório, seria mais comodo a criação da tabela e inserção dos itens via fonte mesmo, montando a tabela... seria algo simples...

Share this post


Link to post
Share on other sites

O problema é que eu não estou conseguindo fazer do jeito que vocês estão falando. E eu preciso disso até sexta-feira e só tá faltando isso para eu acabar o programa. E essa é a parte mais importante, então se for mais fácil mudar de banco de dados eu mudo.

Share this post


Link to post
Share on other sites

Faz com a tabela temporária, pois não se esqueça que o SQLServer é muito mais pessado a instalação...Cria uma tabela com os campos:FORNECEDORMATERIALVALORVALORTOTALE depois faz um while sobre a tabela em questão, fazendo uma consulta nesta tabela criada, caso o registro em questão é menor que o existente na tabela temp, faz um update, senão avança para o próximo, caso não tenha o registro ainda na tabela, insere ele... barbadinha... depois no relatório basta fazer um SQL sobre tabela temp...

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.