Ir para conteúdo

POWERED BY:

Arquivado

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

FabioRubim

Gerar relatório com um determinado cliente

Recommended Posts

Bom dia pessoal...

Eu gostaria de gerar um relatório, mas sei pouco de como gerar relatórios, é assim (vai parecer super besta mas..eu não sei... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif ) vai ter uma opção para gerar um relatório de clientes com opções de escolha como, ordem alfabética, por código, por telefone, um determinado grupo e um único cliente, ai que esta o problema, se eu pego vários clientes e uma query é preenchida com os clientes que eu escolhi após um qry.open ok, mas eu to querendo que apareça +- assim: se eu digitar na busca Fábio, ira listar em um DBGrid todos os Fábios (no sql %Fábio%), mas dentre eles um só eu quero, quero clicar em um e o meu QuickReport só mostrar aquele, e se eu quiser mais eu seleciono mais usando algum componente de exibição tipo um ListBox, só que a qry tem todos os resultado e como o QuickReport esta conectado com o seu DataSet a essa Qry ira exibir todos, como faço para carregar vários clientes mas eu determinar quais aparecer no meu quick report? (pensei em usar uma segunda query e o locate(como me auxiliaram aqui mesmo no modo de procurar algum cliente :D)) ?!?!?!

 

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você poderia fazer algo mais ou menos assim:

1º) Monta a sua Qry Pra listar os clientes no DBGrid..

2º) Monta outra QryRelatorio, e faz um laço while percorrendo todos os registros selecionados no DBGrid, com base nesses registros selecionados no DBGrid, você monta outro Select na QryRelatorio ... algo tipow:

 

var
  IdClientes: String;
begin
  IdClientes:= '';
  qry.First;

  while not qry.Eof do
  begin
	if (IdClientes = '') then
	begin
	  IdClientes:= qryID_CLIENTE.Text;
	end
	else
	begin
	  IdClientes:= IdClientes + ',' + qryID_CLIENTE.Text;
	end;
	qry.Next;
  end;

  with qryRelatorio do
  begin
	Close;
	SQL.Clear;
	SQL.Add('SELECT * FROM CLIENTES');
	SQL.Add('WHERE ID_CLIENTES IN(' + IdClientes + ')');
	Open;
  end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal..gostei...só que eu fiz um pouco diferente:

 

procedure TfrmRelClientes.btnOkClick(Sender: TObject);
var
  Clientes:string;
  i:integer;
begin
  for i := 1 to DbGridPesquisar.SelectedRows.Count do
	begin
	  qryPesqProd.GotoBookMark(Pointer(DbGridPesquisar.SelectedRows.Items[i-1]));
	  //Soma := Soma +  ClientDataSet1.FieldByName('Salary').AsFloat;
	  if (Clientes <> '' ) then
		Clientes:=Clientes+','+qryPesqProd.fieldbyname('Nome').AsString
	  else
		Clientes:=Clientes+qryPesqProd.fieldbyname('Nome').AsString;
	end;

  qryRelClientes.Close;
  qryRelClientes.SQL.Clear;
  qryRelClientes.SQL.Add('select Codigo,Nome,Endereco as Endereço,Telefone,Celular,[E-mail] as Email,RG,CPF,Cli_Fisico,Cli_Juridico');
  qryRelClientes.SQL.Add('from TabClientes where TabClientes.Nome in('''+ Clientes +''')');  //Provavel erro
  qryRelClientes.Open;

  //QrClientes.Preview;
end;

só que estou tendo um problema, se eu selecionar mais de um cliente do DBGrid, eles não são colocados na qryRelClientes, acho que não estou sabendo usar a clausula IN do SQL.....poderiam me ajudar?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa! Demorei pq estive ausente por esses dias ...

Veja:

with qryRelClientes do
  begin
	Close;
	SQL.Clear;
	SQL.Add('SELECT');
	SQL.Add('   CODIGO, NOME, ENDERECO AS ENDEREÇO, TELEFONE, CELULAR,');
	SQL.Add('   [E-MAIL] AS EMAIL, RG, CPF, CLI_FISICO, CLI_JURIDICO');
	SQL.Add('FROM');
	SQL.Add('   TABCLIENTES');
	SQL.Add('WHERE');
	SQL.Add('   TABCLIENTES.ID_CLIENTE IN('+ CodClientes + ')');  //Repare q mudei a Clausula in .... to passando o Id do cliente ...
	Open;
  end;

Assim deve funcionar perfeitamente, você apenas deve mudar no seu code o laço while, para q ao invés do pegar o nome do cliente, seja pego o ID do Cliente ....

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Relaxa... vocês aqui do fórum ja me ajudam muito... :D

Ok, funcionou perfeitamente,entendi o uso de IN (preciso ver mais SQL ... http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif ) mas e seu eu quisesse fazer pelo nome do cliente? tem como? Obrigado! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.