Impressão no quickreport através de uma query
Tenho uma Query q apresenta em um DBgrid os dados de titulos do pedido, eu gostaria de saber como eu faço para imprimir em um quickreport o titulos q a pessoa selecionou no dbgrid depois da consulta, minha query está assim:
Select Titulos.NroPed,Titulos.NroTitulo,Titulos.Valor,Titulos.Vencimento, Clientes.Nome as Cliente,
Clientes.Endereco,Clientes.Cep, Clientes.Bairro, Clientes.Cidade,Clientes.UF,Clientes.Cgc,Clientes.Cpf,Clientes.Codigo,Pedidos.Vendedor,Pedidos.DataPed
From Titulos,Pedidos,Clientes
Where Pedidos.Numero = Titulos.NroPed and
Clientes.Codigo = Pedidos.CodCliente and
Titulos.Vencimento between :VarDataI and :VarDataF and
Upper(Clientes.Nome) Like Upper(:VarNome)
Group By Titulos.Valor,Titulos.NroTitulo,Titulos.Vencimento,Titulos.NroPed, Clientes.Nome,
Clientes.Endereco,Clientes.Cep, Clientes.Bairro, Clientes.Cidade,Clientes.UF,Clientes.Cgc,Clientes.Cpf,Clientes.Codigo,Pedidos.Vendedor,Pedidos.DataPed
Order by Titulos.Vencimento,Clientes.Nome
e o botão q imprimi no quickreport somente assim:
Quickrep1.Preview;
uso tabelas paradox.
Alguém pode me ajudar? Obrigado
Select Titulos.NroPed,Titulos.NroTitulo,Titulos.Valor,Titulos.Vencimento, Clientes.Nome as Cliente,
Clientes.Endereco,Clientes.Cep, Clientes.Bairro, Clientes.Cidade,Clientes.UF,Clientes.Cgc,Clientes.Cpf,Clientes.Codigo,Pedidos.Vendedor,Pedidos.DataPed
From Titulos,Pedidos,Clientes
Where Pedidos.Numero = Titulos.NroPed and
Clientes.Codigo = Pedidos.CodCliente and
Titulos.Vencimento between :VarDataI and :VarDataF and
Upper(Clientes.Nome) Like Upper(:VarNome)
Group By Titulos.Valor,Titulos.NroTitulo,Titulos.Vencimento,Titulos.NroPed, Clientes.Nome,
Clientes.Endereco,Clientes.Cep, Clientes.Bairro, Clientes.Cidade,Clientes.UF,Clientes.Cgc,Clientes.Cpf,Clientes.Codigo,Pedidos.Vendedor,Pedidos.DataPed
Order by Titulos.Vencimento,Clientes.Nome
e o botão q imprimi no quickreport somente assim:
Quickrep1.Preview;
uso tabelas paradox.
Alguém pode me ajudar? Obrigado
Janete
Curtidas 0
Respostas
Dli
02/07/2003
Usa a tua query, como o dataset para o quick report, ao invés de usar uma tabela.
Desta forma o qr vai pegar só o resultado da pesquisa , que tu vê dentro do DBGrid.
[]´s
dli
Desta forma o qr vai pegar só o resultado da pesquisa , que tu vê dentro do DBGrid.
[]´s
dli
GOSTEI 0
Janete
02/07/2003
Mas eu já estava colocando no dataset do qreport e ele imprimi todos q estão no dbgrid e não só aquele q selecionei.
GOSTEI 0
Kfe
02/07/2003
Monte uma query com o que a pessoa selecionar no dbgrid.
Daí monte uma query com os itens que elea escolheu e ligue à tabela
Daí monte uma query com os itens que elea escolheu e ligue à tabela
GOSTEI 0
Jairo Norenberg
02/07/2003
Janete
Se eu estivesse na sua situação eu faria o seguinte.
Com os ítens selecionados no grid ( 1 ou vários) criaria um tabela temporária, através de um ClientDataSet (Pallet MIDAS) e nele gravaria todos os registros selecionados do grid.
Para o relatório usaria esta tabela.
Se voce nunca usou o ClientDataSet, use-o pois é muito pratico neste caso e simples.
Siga os passos:
1. Adicione o componente ClientDataSet no form.
2. Vá na tua query referente ao teu grid e de dois click +
Ctrl L (selecionar todos) + Ctrl C (copiar). Isto selecionará todos os campos da tabela.
3. Vá no teu ClientDataSet e dê dois click (Vai abrir o editor de campos)
dê um Ctrl V (copiar). Isto copiará a estrutura da tua query para a nova
tabela.
4. Vá no teu ClienteDataSet, clique com o batão direito do mouse, abrirá um menu suspenso, escolha a opção CREATE DATA SET
5. Pronto sua tabela está criada. Agora voce poderá trabalhar com o ClientDataSet da mesma forma que trabalharia com Table e QuerY, (usando append, insert, edit, post, first, next, prior, last, etc.).
6.Abaixo escrevi o código para voce pegar os dados da seu grid, adicionar a tabela e exibir seu relatorio. Veja que voce poderá marcar várias linhas do dbgrid, para isto, nas opções do dbgrid faça: dbgrid1/options/dgMultiSelect=True
e dgRowSelect=True.
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
i,j:integer;
begin
ClientDataSet1.EmptyDataSet;
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
ClientDataSet1.Append;
for j:=0 to Query1.FieldCount -1 do
ClientDataSet1.fields[j].Value := Query1.Fields[j].Value;
ClientDataSet1.Post;
end;
// ppReport1.Print; // eu uso o Report Buider
Quickrep1.Preview;
end;
Creio que isto vai te ajudar
Até +
Jairo Norenberg :P
Se eu estivesse na sua situação eu faria o seguinte.
Com os ítens selecionados no grid ( 1 ou vários) criaria um tabela temporária, através de um ClientDataSet (Pallet MIDAS) e nele gravaria todos os registros selecionados do grid.
Para o relatório usaria esta tabela.
Se voce nunca usou o ClientDataSet, use-o pois é muito pratico neste caso e simples.
Siga os passos:
1. Adicione o componente ClientDataSet no form.
2. Vá na tua query referente ao teu grid e de dois click +
Ctrl L (selecionar todos) + Ctrl C (copiar). Isto selecionará todos os campos da tabela.
3. Vá no teu ClientDataSet e dê dois click (Vai abrir o editor de campos)
dê um Ctrl V (copiar). Isto copiará a estrutura da tua query para a nova
tabela.
4. Vá no teu ClienteDataSet, clique com o batão direito do mouse, abrirá um menu suspenso, escolha a opção CREATE DATA SET
5. Pronto sua tabela está criada. Agora voce poderá trabalhar com o ClientDataSet da mesma forma que trabalharia com Table e QuerY, (usando append, insert, edit, post, first, next, prior, last, etc.).
6.Abaixo escrevi o código para voce pegar os dados da seu grid, adicionar a tabela e exibir seu relatorio. Veja que voce poderá marcar várias linhas do dbgrid, para isto, nas opções do dbgrid faça: dbgrid1/options/dgMultiSelect=True
e dgRowSelect=True.
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
i,j:integer;
begin
ClientDataSet1.EmptyDataSet;
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
ClientDataSet1.Append;
for j:=0 to Query1.FieldCount -1 do
ClientDataSet1.fields[j].Value := Query1.Fields[j].Value;
ClientDataSet1.Post;
end;
// ppReport1.Print; // eu uso o Report Buider
Quickrep1.Preview;
end;
Creio que isto vai te ajudar
Até +
Jairo Norenberg :P
GOSTEI 0