Jump to content

Archived

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

tjlopes

Cotação menor preço

Recommended Posts

Vixe, agora não consigo, tô no trampo... teria que tirar um tempo para criar tabelas e testar conforme sua situação...Tente fazer ai com a tabela temporária, caso não consiga, tentamos pelo SQLServer...

Share this post


Link to post
Share on other sites
Select     TOP(Select Count(distinct Medicamento) from Tabela1) Fornecedor, Medicamento, min(Valor) as Valor, min(ValorTotal) as ValorTotalFrom Tabela1 group by Fornecedor, Medicamento

Share this post


Link to post
Share on other sites
Select distinct(Medicamento),Fornecedor, min(Valor) as Valor, min(ValorTotal) as ValorTotalFrom Tabela1 group by Fornecedor, Medicamento

assim você pega todos os medicamentos com nome distintos e com o menor valor ...

Share this post


Link to post
Share on other sites

Bom entao, eu axo mais interessante fazer como o Mario disse, criar uma tabela temporaria...

dai você pode fazer algo assim:

 

with qry do begin	Close;	SQL.Clear;	SQL.Add('SELECT TOP 10 DISTINCT(MEDIC), MIN(VALOR) AS VALOR');	SQL.Add('FROM TABELA1 GROUP BY MEDIC');	Open; end;

dai usa outra qryAux pra filtrar todos os campos nescessarios (*) da tabela1 algo assim:

qryAux.SQL.Add('SELECT * FROM TABELA1 WHERE MEDIC='+ qryMedic.Text + ' AND VALOR =' + qryValor.Text);

isso dentro de um laço While... e dai manda pra tabela temp e usa a mesma pra compor o relatorio ...

Share this post


Link to post
Share on other sites

Rodrigo, eu não sei que mágica você fez, eu só sei que tentei n instruções SQL diferente e nenhuma delas tava dando certo, mas na hora que eu resovi usar a que você passou sem o TOP 10, funcionou tudo do jeito que eu precisava. Obrigado pela ajuda e principalmente o pessoal que teve toda a paciência para tentar me ajudar. Valeu mesmo galera. Brigadão.

Share this post


Link to post
Share on other sites

heheh...nesse caso o segredo esta no Distinct e no Group by ...que deve se utilizar somente uma coluna pra agrupar senão ele bagunça a seleção dos distincts ...vlw ... fiko feliz q conseguiu resolver o seu problema ... :rolleyes:

Share this post


Link to post
Share on other sites

Sem querer abusar da boa vontade de vocês, me ajudem em mais uma coisa: eu resolvi fazer usando uma tabela temp só para testar e aprender (o que não custa nada), mas na hora que eu mando executar o comando me aparece a seguinte mensagem 'InvalidField name CAPECITABINA' sendo que CAPECITABINA é o nome de um produto e que stá na primeira posição do resultado da consulta. with Query1 do begin Close; SQL.Clear; SQL.Add('SELECT DISTINCT Medicamento, MIN(ValorTotal) AS ValorTotal '); SQL.Add('FROM ResultadoCotacao group by Produto'); Open; end; while not Query1.Eof do begin Query2.Close; Query2.SQL.Clear; Query2.SQL.Add('SELECT * FROM ResultadoCotacao WHERE Medicamento= '+ Query1Medicamento.Text + ' AND ValorTotal = ' + Query1ValorTotal.Text); Query2.open; end;

Share this post


Link to post
Share on other sites

Experimente colocar o QuotedStr ...

 

Query2.SQL.Add('SELECT * FROM ResultadoCotacao WHERE Medicamento= '+ QuotedStr(Query1Medicamento.Text)+ ' AND ValorTotal = ' + Query1ValorTotal.Text);

Share this post


Link to post
Share on other sites

×

Important Information

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