Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

EderDias

Relatório Duplica nr de registros

Recommended Posts

Ola..pessoal..Tou com um relatorio dando um probleminha......ele esta praticamente pronto exceto pelo seguinte:Ele duplica os dados ou seja, se ele tem 5 registros ao inves de ele somar os 5 e me passar o total...ele mostra 5 vezes o mesmo valor.exemplo:Incorreto:

cliente=================valor=========================xxxxx.......................................10,00xxxxx.......................................10,00xxxxx.......................................10,00xxxxx.......................................10,00xxxxx.......................................10,00

Correto:

cliente=================valor=========================xxxxx.......................................10,00

eu uso apenas uma tabela não tem outro...é uma consulta simples:codigo abaixo que estou usando:

Txt := 'select codigo, nome_vendedor, remetente_nome, remetente_cnpj, valor_frete, data_emissao FROM ctrc'+' where nome_vendedor =' + QuotedStr(Edit1.text) + ''+' order by remetente_nome';

Muito Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra ... você quer agrupar por cliente somando o valor q cada cliente tm ...

ou quer exibir o nro de registros ??

 

c quiser agrupar por cliente faz assim:

 

 

SQL = 'SELECT SUM(VALOR) AS VALOR, CLIENTE FROM TABELA GROUP BY CLIENTE'qry.SQL.Add(SQL)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um teste, executa este comando SQL separadamente sobre o seu BD, e veja se resulta em somente uma linha ou em mais linhas... Verifique se tem o DataSet ligado no QuickReport...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um teste, executa este comando SQL separadamente sobre o seu BD, e veja se resulta em somente uma linha ou em mais linhas...

R. bom fiz um testezinho com o meu codigo com dbgrid e funcionou sem erro...só que ai ele lista o registros....e não acumula....porque é dbgrid.no meu relatorio como é um totalizador por mes ....ele tem que somar os registros e mostrar....isto ele ja faz..o problema é que ele lista ja o somatorio x o nr de registros.

Verifique se tem o DataSet ligado no QuickReport...

R. Sim esta ligado.explicando mais detalhadamento meu caso:eu to gerando num botão com este codigo:

procedure TFormRTME.EncartaButton3Click(Sender: TObject);varTxt : String;beginTxt := 'select codigo, nome_vendedor, remetente_nome, remetente_cnpj, sum(valor_frete), data_emissao FROM ctrc'+' where nome_vendedor =' + QuotedStr(combobox2.text) + ''+' GROUP BY codigo, nome_vendedor, remetente_nome, remetente_cnpj, valor_frete, data_emissao' +' order by remetente_nome'; FormRTME2.QrLabel47.Caption:='Ano: ';FormRTME2.ano.Caption:=ComBoBox1.Text;FormRTME2.QrLabel49.Caption:='';//FormRTME2.Query1.Close;FormRTME2.Query1.SQL.Text := Txt;FormRTME2.Query1.Open;if FormRTME2.Query1.IsEmpty ThenbeginMessageDlg('Nenhum Registro Encontrado!', mtInformation, [mbOk],0);Exit;end;//FormRTME2.QrLabel46.Caption:='Total de Frete por cliente por Mes';FormRTME2.quickrep1.Preview;end;

neste form no quick FormRTM2 eu tenho um totalizador por mes....e tbem tenho mais um query chamda QueryMeses que tem a seguinte instrução SQL=

SELECT sum(VALOR_FRETE) as TOTAL FROM CTRCWHERE extract(month from data_emissao)=:pMesand extract(year from data_emissao)=:pAnoand REMETENTE_CNPJ=:pCliente

o relatorio mostra:

clientes----jan---fev---mar---abri etc....xxxx.........10.....5.......6.......60...........

o poblema é que como mostrei no inicio do topico ta duplicando o mesmo registro por cliente.Em cada mes eu coloquei um Qrlabel que faz as contas com variaveis e mostra:

procedure TFormRTME2.QRLabel15Print(sender: TObject; var Value: String);beginqryMeses.Close;qryMeses.ParamByName('pAno').AsInteger := StrToInt(FormRTME.ComboBox1.Text); qryMeses.ParamByName('pMes').AsInteger := 1; //mes 1-janeiroqryMeses.ParamByName('pCliente').AsString := Query1REMETENTE_CNPJ.AsString;qryMeses.Open;TotJaneiro := TotJaneiro + qryMesesTOTAL.AsCurrency;TJan := 0;TJan := TJan + qryMesesTOTAL.AsCurrency;//Value := FormatFloat('###,###,##0.00',qryMesesTOTAL.AsCurrency);If (value<>'0,00') and (value<>'') thenRJan := RJan + 1;end;

é um relatorio meio chato....mtos codigos.....mas ta perfeito exceto ....exceto pela duplicação de registros(clientes).Valeu carinha....se tiver alguma ideia...t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já pensou em ter uma tabela temporária que seria montada através da sua consulta, e preenchido os demais campos conforme os cálculos necessários, onde que no relatório somente iria precisar listar as informações desta tabela temporária, sendo que teria na tabela coluna do nome do cliente e dos meses, com os valores já calculados, ficaria mais simples...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.