Diabloline Postado Janeiro 15, 2005 Denunciar Share Postado Janeiro 15, 2005 Quero fazer um relatorio da seguinte maneira, vou explicar como funciona hoje.1 Tabela de MovimentaçãoTodo registro de entrada e saída vai pra ela, com codigo, descricao, data, tipo, grupo, quantidade. Num determinado periodo(20/12/04 a 25/12/04).Ex:Codigo Descrição Grupo Quantidade Tipo Data102 Parafuso Metais 20 E 20/12/04504 Caneta Escritorio 82 E 21/12/04102 Parafuso Metais 20 E 22/12/04504 Caneta Escritorio 05 S 22/12/04102 Parafuso Metais 50 S 23/12/04102 Parafuso Metais 100 E 24/12/04504 Caneta Escritorio 01 S 25/12/04102 Parafuso Metais 25 S 25/12/04504 Caneta Escritorio 20 E 25/12/04Assim sai no relatorio que tenho hoje.O que pretendo!que saia da seguinte maneira:Caso: Vou determinar o periodo só que ao invés de sair separado ele tem que unir as quantidades e ficaria assim.Codigo Descrição Grupo Quantidade Tipo Data504 Caneta Escritorio 102 E 20/12/04 25/12/04504 Caneta Escritorio 06 S 20/12/04 25/12/04102 Parafuso Metais 140 E 20/12/04 25/12/04102 Parafuso Metais 75 S 20/12/04 25/12/04Como fazer para ele unir os mesmos itens dessa maneira. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Janeiro 15, 2005 Denunciar Share Postado Janeiro 15, 2005 Experimente dar uma pesquisada sobre a cláusula GROUP BY. Só que o lance do campo Data ter duas datas diferentes é que não sei se vai se ajustar ao caso.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Renato_agito10 Postado Janeiro 15, 2005 Denunciar Share Postado Janeiro 15, 2005 qual banco q você esta usando??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Janeiro 17, 2005 Denunciar Share Postado Janeiro 17, 2005 Olá,É tipo assim:Query1.Close;Query1.Sql.Clear;Query1.Sql.Add('Select Codigo, Descricao, Grupo, Sum(Quantidade)Quantidade, Tipo');Query1.Sql.Add('From Tabela');Query1.Sql.Add('Where Data Beetwen :dataini and :datafim');Query1.Sql.Add('Group By Codigo, Descricao, Grupo, Tipo');Query1.ParamByName('dataini').AsDate := StrToDateTime(MaskEdit1.text);Query1.ParamByName('datafim').AsDate := StrToDateTime(MaskEdit2.text);Query1.Open;Obs: Só não da pra colocar a data da forma como você quer (20/12/04 25/12/04) na select, mas não há necesidade disso, num relatório você poderia usar um QRLabel pra trazer esse periodo do form onde você ta informando essa data.Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diabloline Postado Janeiro 25, 2005 Autor Denunciar Share Postado Janeiro 25, 2005 Tive problemas fiquei muito tempo sem postar, vou tentar esse comando.Banco de dados Paradox Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diabloline Postado Janeiro 25, 2005 Autor Denunciar Share Postado Janeiro 25, 2005 A parte da data já tinha feito assim.Mas da dando um erro aqui When Group By exists, every simple field in projectors must be in Group ByO que pode ser? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Janeiro 25, 2005 Denunciar Share Postado Janeiro 25, 2005 Olá,Posta ae, o código que você ta usando!Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diabloline Postado Janeiro 25, 2005 Autor Denunciar Share Postado Janeiro 25, 2005 dados.QueryMovimentacao.Close; dados.QueryMovimentacao.SQL.Clear; dados.QueryMovimentacao.SQL.Add('SELECT *'); dados.QueryMovimentacao.SQL.Add('FROM Movimentacao'); dados.QueryMovimentacao.SQL.Add('WHERE Mov_Data>=:pInicial and Mov_Data<=:pFinal'); dados.QueryMovimentacao.SQL.Add('GROUP BY Mov_Descricao'); dados.QueryMovimentacao.SQL.Add('ORDER BY Mov_Descricao'); dados.QueryMovimentacao.ParamByName('pInicial').AsDateTime := StrToDate(Inicial); dados.QueryMovimentacao.ParamByName('pFinal').AsDateTime := StrToDate(Final); dados.QueryMovimentacao.Open; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Janeiro 25, 2005 Denunciar Share Postado Janeiro 25, 2005 Olá,nesse caso, pra usar o GROUP BY, você tera que especificar os campos da tabela na select em vez de usar o asteristico (Select * ...)tipo assim:Query1.Sql.Add('Select Codigo, Descricao, Grupo, Sum(Quantidade)Quantidade, Tipo');Quais são os campos de você quer mostrar no relatório?Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diabloline Postado Janeiro 27, 2005 Autor Denunciar Share Postado Janeiro 27, 2005 dados.QueryMovimentacao.SQL.Add('SELECT Mov_Descricao, Mov_Registro, Sum(Mov_Quantidade)Mov_Quantidade, Mov_Grupo, Mov_Tipo, Mov_Cliente, Mov_Data'); dados.QueryMovimentacao.SQL.Add('FROM Movimentacao'); dados.QueryMovimentacao.SQL.Add('WHERE Mov_Data>=:pInicial and Mov_Data<=:pFinal'); dados.QueryMovimentacao.SQL.Add('GROUP BY Mov_Descricao'); dados.QueryMovimentacao.SQL.Add('ORDER BY Mov_Descricao');Eu já havia feito isso só que está dando o mesmo erro, será que algo que tenho que determinar para o TQuery ou na Tabela? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Janeiro 27, 2005 Denunciar Share Postado Janeiro 27, 2005 Olá,nesse caso você tera que agrupar todos os campos exceto o campo 'quantidade', tipo assim: GROUP BY Mov_Descricao, Mov_Registro, Mov_Grupo, Mov_Tipo, Mov_Cliente, Mov_DataObs: pra sua select da certo, esses campos agrupados devem ter resultados iguais, caso contrario o resultado de sua select pode não ser o resultado esperado.Abs. Progr'amador Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diabloline Postado Janeiro 29, 2005 Autor Denunciar Share Postado Janeiro 29, 2005 Só que o meu campo registro é chave primario, o que devo fazer?Se eu tirar ele da Select da o mesmo erro erro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Janeiro 31, 2005 Denunciar Share Postado Janeiro 31, 2005 Tem como você mandar para meu e-mail um exemplo desse funcionado ai acerto pois o meu deve estar com algum erro.T+ obrigadodiabloline@bol.com.br Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Janeiro 31, 2005 Denunciar Share Postado Janeiro 31, 2005 Tem como você mandar para meu e-mail um exemplo desse funcionado ai acerto pois o meu deve estar com algum erro.T+ obrigadodiabloline@bol.com.br Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Fevereiro 1, 2005 Denunciar Share Postado Fevereiro 1, 2005 Olá Diabloline,Desculpe a demora, é que estou com sérios problemas pra acessar a SB.Me diga: Qual são os campos que realmente serão necessários que saia no seu relatório?Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Fevereiro 2, 2005 Denunciar Share Postado Fevereiro 2, 2005 Mov_Descricao, Mov_Grupo, Mov_Tipo, Mov_DataMov_Registro é a chave primaria da tabela Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Fevereiro 4, 2005 Denunciar Share Postado Fevereiro 4, 2005 Olá, desculpe a demora!O fato de que Mov_Registro, num quer dizer que seja necessário estar na Select, dependendo da situação, então ver se isso serve pra vc, acho que você esquecei a Mov_quantodade... Ae vai:With dados.QueryMovimentacao do beginClose;Sql.Clear;Sql.Add('SELECT Mov_Descricao, Mov_Grupo, Mov_Tipo, Mov_Data, Sum(Mov_Quantidade)Mov_Quantidade');Sql.Add('FROM Movimentacao');Sql.Add('WHERE Mov_Data Between :pInicial and :pFinal');dados.QueryMovimentacao.SQL.Add('GROUP BY Mov_Descricao, Mov_Grupo, Mov_Tipo, Mov_Data');dados.QueryMovimentacao.SQL.Add('ORDER BY Mov_Descricao');etc,etc...End;Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Fevereiro 5, 2005 Denunciar Share Postado Fevereiro 5, 2005 procedure TFormMovDescricao.BitBtn1Click(Sender: TObject);varInicial,Final:String;begin Inicial := MaskEdit1.Text; Final := MaskEdit2.Text; With dados.QueryMovimentacao do begin close; sql.Clear;Mov_Registro, Sum(Mov_Quantidade)Mov_Quantidade, Mov_Grupo, Mov_Tipo, Mov_Cliente, Mov_Data FROM Movimentacao WHERE Mov_Data>=:pInicial and Mov_Data<=:pFinal GROUP BY Mov_Descricao, Mov_Grupo, Mov_Tipo ORDER BY Mov_Descricao'; SQL.Add('SELECT Mov_Descricao,Mov_Tipo, Sum(Mov_Quantidade)Mov_Quantidade,Mov_Grupo, Mov_Data'); SQL.Add('FROM Movimentacao'); SQL.Add('WHERE Mov_Data>=:pInicial and Mov_Data<=:pFinal'); dados.QueryMovimentacao.SQL.Add('GROUP BY Mov_Descricao, Mov_Grupo, Mov_Tipo'); dados.QueryMovimentacao.SQL.Add('ORDER BY Mov_Descricao'); dados.QueryMovimentacao.ParamByName('pInicial').AsDateTime := StrToDate(Inicial); dados.QueryMovimentacao.ParamByName('pFinal').AsDateTime := StrToDate(Final); dados.QueryMovimentacao.Prepare; FormRelMovimentacao := TFormRelMovimentacao.Create(Self); FormRelMovimentacao.rptRel.Preview; end;end;Pode ser que tenha algum erro na geração do formulario mas acdreditt que não.Se tiver como me enviar um exemplo funcionado.diabloline@bol.com.brdesde já agradeço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Fevereiro 5, 2005 Denunciar Share Postado Fevereiro 5, 2005 Olá,Tem varios erros ae!Tenta assim:procedure TFormMovDescricao.BitBtn1Click(Sender: TObject);varInicial,Final:String;beginInicial := MaskEdit1.Text;Final := MaskEdit2.Text;FormRelMovimentacao := TFormRelMovimentacao.Create(Self);With dados.QueryMovimentacao do beginclose;sql.Clear;SQL.Add('SELECT Mov_Descricao,Mov_Tipo, Sum(Mov_Quantidade)Mov_Quantidade,Mov_Grupo, Mov_Data');SQL.Add('FROM Movimentacao');SQL.Add('WHERE Mov_Data>=:pInicial and Mov_Data<=:pFinal');dados.QueryMovimentacao.SQL.Add('GROUP BY Mov_Descricao,Mov_Tipo, Mov_Grupo, Mov_Data');dados.QueryMovimentacao.SQL.Add('ORDER BY Mov_Descricao');dados.QueryMovimentacao.ParamByName('pInicial').AsDate := StrToDate(Inicial);dados.QueryMovimentacao.ParamByName('pFinal').AsDate := StrToDate(Final);dados.QueryMovimentacao.Open;FormRelMovimentacao.rptRel.Preview;end;end;-------------------Se ocorrer algum erro, posta ae o erro tambem, Ok! Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diabloline Postado Fevereiro 10, 2005 Autor Denunciar Share Postado Fevereiro 10, 2005 QueryMovimentacao: Field 'Mov_Registro' not found.Se colocar o Mov_Registro nesta linha o erro continua o mesmo de antesSQL.Add('SELECT Mov_Registro, Mov_Descricao,Mov_Tipo, Sum(Mov_Quantidade)Mov_Quantidade,Mov_Grupo, Mov_Data');T+Se tiver como me mandar um exemplo por e-mail Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Fevereiro 10, 2005 Denunciar Share Postado Fevereiro 10, 2005 Olá, QueryMovimentacao: Field 'Mov_Registro' not found. Exclua essa QueryMovimentacao e crie outra, e coloque essa select, ok!Se tiver como me mandar um exemplo por e-mailEu num tenho nenhum exemplo desse não.Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diabloline Postado Fevereiro 12, 2005 Autor Denunciar Share Postado Fevereiro 12, 2005 não entendo o que você quis dizer Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Fevereiro 14, 2005 Denunciar Share Postado Fevereiro 14, 2005 não entendo o que você quis dizer Olá,quero dizer pra você excluir (deletar) essa query e fazer numa nova query, ou então dê dois cliques nesse query e limpe os fields da lista se houver, mas o mais aconselhavel é fazer em uma nova query.Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Diabloline
Quero fazer um relatorio da seguinte maneira, vou explicar como funciona hoje.
1 Tabela de Movimentação
Todo registro de entrada e saída vai pra ela, com codigo, descricao, data, tipo, grupo, quantidade. Num determinado periodo(20/12/04 a 25/12/04).
Ex:
Codigo Descrição Grupo Quantidade Tipo Data
102 Parafuso Metais 20 E 20/12/04
504 Caneta Escritorio 82 E 21/12/04
102 Parafuso Metais 20 E 22/12/04
504 Caneta Escritorio 05 S 22/12/04
102 Parafuso Metais 50 S 23/12/04
102 Parafuso Metais 100 E 24/12/04
504 Caneta Escritorio 01 S 25/12/04
102 Parafuso Metais 25 S 25/12/04
504 Caneta Escritorio 20 E 25/12/04
Assim sai no relatorio que tenho hoje.
O que pretendo!
que saia da seguinte maneira:
Caso: Vou determinar o periodo só que ao invés de sair separado ele tem que unir as quantidades e ficaria assim.
Codigo Descrição Grupo Quantidade Tipo Data
504 Caneta Escritorio 102 E 20/12/04 25/12/04
504 Caneta Escritorio 06 S 20/12/04 25/12/04
102 Parafuso Metais 140 E 20/12/04 25/12/04
102 Parafuso Metais 75 S 20/12/04 25/12/04
Como fazer para ele unir os mesmos itens dessa maneira.
Link para o comentário
Compartilhar em outros sites
22 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.