Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Como somar valores de um FrxReport


valSistemasDelphi
 Share

Question

16 answers to this question

Recommended Posts

  • 0

iae.. Jhonas estou com um problema aqui no meu FRXReport...   Todas as vendas do meu caixa está sendo visualizadas em forma de relatório até ai tudo bem. os registros estão em sequência corretamente.. Só que quando chega no 17º registro quando fecho e abro de novo o relatório os registros estão todos bagunçados entendeu.. Se poder explicar porque está acontecendo isso eu agradeço..

Link to comment
Share on other sites

  • 0

provavelmente porque voce não esta zerando alguma variável global no relatório

imagine que voce esta fazendo um calculo e armazenando esse calculo em uma variável ... se voce não zera essa variável, quando voce fecha e abre o relatório novamente, aquela variável permanece com o valor anterior e acaba bagunçando o resultado mais a frente.

abraço

 

Link to comment
Share on other sites

  • 0

568c25cd3cbba_CapturadeTela(127).thumb.p

Jhonas estou fazendo da seguinte maneira e ate agora não deu certo.. Estou pegando os valores do caixa.Do campo Total no relatório adicionei um sumary e um system text. E coloquei a seguinte função [(Sum(<frxDBDataset1."Total">,MasterData1))] mais ele não soma ele apenas junta os valores.. Por exemplo no registro 1 tem 45 no registro 2 tem 45 invés de ele somar ele ajunta 4545. Se poder me ajudar..

Edited by valSistemasDelphi
Link to comment
Share on other sites

  • 0

coloquei a seguinte função [(Sum(<frxDBDataset1."Total">,MasterData1))] mais ele não soma ele apenas junta os valores

se voce quer somar campos diferentes, seria isso:

exemplo

SUM(CDS_Opcoes.TOT_CORR) + SUM(CDS_Opcoes.SALDO)

lembrando: um sumary vai retornar a soma total, da soma individual do grupo

abraço

 

Link to comment
Share on other sites

  • 0

somar campo total com o mesmo campo total não tem lógica

mas somar...   os campos Sub-Total em um Total-Geral, ai sim tem lógica

se no sumary voce colocar somente  Sum(<frxDBDataset1."Total"> )  voce vai ter a soma total dos campos dos registros

abraço

Link to comment
Share on other sites

  • 0

Jhonas apaguei aqui no meu sistema um Ibtable que eu tinha colocado por que vi que não necessitava.. ai salvei beleza. Só que quando copilo a aplicação. a aplicação inicia meio que travado. Aplicação entra na tela principal do sistema ate ai tudo bem. Só que quando faço qualquer manipulação no sistema fica tudo que meio travado ta funcionando a aplicação so que meio travado... E aparece esse evento em vermelho quando a aplicação e iniciada  Module Load: UNKNOWN_MODULE_10. No Debug Info. Base Address: $721D0000. Process Project1.exe (6468).. Queria saber se tem como eu restaurar meu projeto ate onde eu fiz a modificação.. Desde já agradeço pela resposta.

Link to comment
Share on other sites

  • 0

Queria saber se tem como eu restaurar meu projeto ate onde eu fiz a modificação..

uma boa pratica é salvar o seu projeto todo em um arquivo ZIP, no final do dia de trabalho, ou de tempos em tempos

com isso voce sempre vai ter uma cópia do seu projeto que voce sabe que esta funcionando perfeitamente

entretanto, o delphi pode nos livrar de dores de cabeça como essa.

cada vez que voce modifica algum form de seu projeto, ele cria um backup desse form antes da modificação

exemplo

UCadAlu.~dpp

UCadAlu.~dfm

UCadAlu.~pas

então basta deletar os arquivos .dfm e .pas  e renomear novamente os .~dfm e .~pas tirando o ~

recompile novamente o projeto, e ele vai voltar ao que era, antes da modificação

abraço

Link to comment
Share on other sites

  • 0

Jhonas deixa eu tirar uma dúvida .. Criei um código que ele filtra a data vendida por exemplo hoje. para ser visualizado no relatório. Visualiza as datas normalmente so que quando eu vo la no meu caixa no dbgrid a data que ele filtrou la no banco de dados fica como sendo a primeira... por exemplo Registro 1,2,3.. Ai eu faço uma venda hoje ai ele cria o registro 4...  depois volto na tela do caixa no dbgrid Fica assim  Registros 4,1,2,3..  Ele modifica o registro se poder me ajudar...

Link to comment
Share on other sites

  • 0

essa é a ordem de gravação dos registros

para que fique sempre na ordem cronológica, basta colocar no select um comando ORDER BY ( ordenar por )

exemplo usando SQL

select * from tabela order by nomecampo

select * from produtos order by venda

exemplo usando Ordenação crescente e decrescente no ClientDataSet

http://pt.stackoverflow.com/questions/6075/ordena%C3%A7%C3%A3o-crescente-e-decrecente-no-clientdataset

outra maneira

http://www.linhadecodigo.com.br/artigo/714/delphi-realizando-consultas_pesquisas-iniciante.aspx

abraço

Link to comment
Share on other sites

  • 0

Valeu ai jhonas pela ajuda.. Consegui resolver de certa parte da seguinte maneira 

Form4.IbTable1.IndexFieldNames :='COD_PRODUTO';

ele fica em ordem quando eu clico no button onde está o código mais se eu fechar em abrir o formulário ele fica bagunçado.Só arruma quando clico no button e ele le o código.. será que falta mais o que um insert por exemplo o um post no final.

Edited by valSistemasDelphi
Link to comment
Share on other sites

  • 0

Jhonas ate agora não consegui resolver os problemas do TDateTimerPicker... tenho dois TDateTimerPicker Data inicial e outro para data final... E um button que monstra o relatório de vendas entre as datas. jhonas tenho um código em sql.. tem como eu mudar ele aqui para Ibtable por exemplo. DEsde já agradeço pela ajuda..

 

inicio : string [60];
final : string [60];
end;

if (PorData.Checked=true) then
begin
  If TDateTimePicker2.Date < TDateTimePicker1.Date Then
begin
ShowMessage('Intervalo de datas inválido, a data inicial é maior que a data final!');
TDateTimePicker2.Date := TDateTimePicker1.Date;
end
Else
begin
Inicio := DateToStr(DateTimePicker1.Date);
Final := DateToStr(DateTimePicker2.Date);
edit1.text:= inicio;
edit2.Text:= final;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'SELECT Data, Num_veiculo, Placa, Km FROM bdgeral '+
'WHERE Data >= DateToStr(INICIO) and data <= DateToStr(FINAL) ORDER BY Data';
Query1.Prepare;
Query1.Open;
DBGrid1.SetFocus

Link to comment
Share on other sites

  • 0

isso está errado .... se inicio e final são strings, porque voce esta convertendo data para string na select, se já é uma string

se eu me engano ...tambem vai ocorrer um erro de: Tipos incompativeis

inicio : string [60];
final : string [60];

Query1.SQL.Text := 'SELECT Data, Num_veiculo, Placa, Km FROM bdgeral '+
'WHERE Data >= DateToStr(INICIO) and data <= DateToStr(FINAL) ORDER BY Data';

 

veja um exemplo simples:  maneira correta

procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.Active := FALSE;
  Query1.SQL.Clear;
  Query1.SQL.Append('SELECT * FROM Moviment WHERE DTENTREGA >= :INI AND DTENTREGA <= :FIM ORDER BY DTENTREGA ');
  Query1.Params[0].AsDate := DateTimePicker1.Date;
  Query1.Params[1].AsDate := DateTimePicker2.Date;
  Query1.Active := TRUE;
end;

agora jogando dentro de uma variavel

procedure TForm1.Button1Click(Sender: TObject);
var inicio, final :TDate;
begin
  inicio := DateTimePicker1.Date;
  final := DateTimePicker2.Date;

  Query1.Active := FALSE;
  Query1.SQL.Clear;
  Query1.SQL.Append('SELECT * FROM Moviment WHERE DTENTREGA >= :INI AND DTENTREGA <= :FIM ORDER BY DTENTREGA ');
  Query1.Params[0].AsDate := inicio;
  Query1.Params[1].AsDate := final;
  Query1.Active := TRUE;
end;

 

então podemos dizer que no seu caso ficaria assim

inicio : TDate;
final : TDate;
end;

if (PorData.Checked=true) then
begin
  If TDateTimePicker2.Date < TDateTimePicker1.Date Then
begin
ShowMessage('Intervalo de datas inválido, a data inicial é maior que a data final!');
TDateTimePicker2.Date := TDateTimePicker1.Date;
end
Else
begin
Inicio := DateTimePicker1.Date;
Final := DateTimePicker2.Date;
edit1.text:= datetostr(inicio);
edit2.Text:= datetostr(final);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'SELECT Data, Num_veiculo, Placa, Km FROM bdgeral '+
'WHERE Data >= :INI and data <= :FIN ORDER BY Data';

  Query1.Params[0].AsDate := inicio;
  Query1.Params[1].AsDate := final;

Query1.Prepare;
Query1.Open;
DBGrid1.SetFocus

=======================================================

OBS: voce esta colocando assuntos diferentes no mesmo post ... quando forem assuntos diferentes coloque em outros posts... ok ?

abraço

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...