tjlopes 0 Denunciar post Postado Junho 27, 2007 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 Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Junho 27, 2007 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??? Compartilhar este post Link para o post Compartilhar em outros sites
tjlopes 0 Denunciar post Postado Junho 27, 2007 Eu estou utilizando Paradox e o acesso é feito através da BDE. E a estrutura da tabela é a mostrada acima. Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Junho 27, 2007 Com paradox complica um pouco!!!O Que você já tem feito nesse sentido ai?Ou não tem feito nada? Compartilhar este post Link para o post Compartilhar em outros sites
tjlopes 0 Denunciar post Postado Junho 27, 2007 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. Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Junho 27, 2007 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... Compartilhar este post Link para o post Compartilhar em outros sites
tjlopes 0 Denunciar post Postado Junho 27, 2007 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. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 27, 2007 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 Compartilhar este post Link para o post Compartilhar em outros sites
tjlopes 0 Denunciar post Postado Junho 27, 2007 É 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. Compartilhar este post Link para o post Compartilhar em outros sites
tjlopes 0 Denunciar post Postado Junho 27, 2007 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. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 27, 2007 Dá forma que mencionei acima, o que mostrou ? Compartilhar este post Link para o post Compartilhar em outros sites
tjlopes 0 Denunciar post Postado Junho 27, 2007 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 Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Junho 27, 2007 Teria que ver o LIMIT ou o TOP... mas acho que no Paradox nem vira... Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 27, 2007 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... Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Junho 27, 2007 Com certeza Márcio, se rolasse Sub-Select esse ponto estaria perfeito, mas infelizmente o Paradox não permite esse tipo de ação... e também o TOP, LIMIT por exemplo... mataria na boa esse problema... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
tjlopes 0 Denunciar post Postado Junho 27, 2007 E no Interbase ou SQL Server. Tem como fazer. Se for preciso eu até mudo de banco de dados. Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Junho 27, 2007 no SQL Server acredito que dê sussegado...O Que você acha Márcio? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 27, 2007 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... Compartilhar este post Link para o post Compartilhar em outros sites
tjlopes 0 Denunciar post Postado Junho 27, 2007 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. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 27, 2007 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... Compartilhar este post Link para o post Compartilhar em outros sites