Array
(
)

Imprimir um Dbgrid

Amarildo
   - 15 mar 2006

Ola Pessoal, meu problema ocorre no momento de estaR gerando uma consulta conforme segue abaixo o exemplo:

Preciso selecionar um determinado valor e que seja pesquisado no Bd de cheques pelo periodo relacionado:

INFORMAR O VALOR A PESQUISA: 1500,00
PERIODO INICIAL: 15/01/2006 À 18/03/2006

TENHO FEITO TODO O PROCEDIMENTO EM SQL USANDO PARADOX, AGORA NECESSITO QUE ESTA DBGRID GERADA PELA PESQUISA SEJA IMPRESSA, USANDO QUICKREPORT TENHO FEITO O RELATORIO So´QUE NAO ESTA SAINDO CONFORME ENCONTRA-SE NA DBGRID E TAMBEM NA DBGRID NAO ESTA APARECENDO APENAS O QUE SOLICITEI APARECE PRATICAMENTE TODOS OS LANCAMENTOS DO PERIODO INFORMADO E NAO SOMENTE OS QUE ESTARIAM FORMANDO O VALOR DE 1500,00. CREIO QUE TENHA SIDO MAIS PRATICO NA EXPLICACAO. NO AGUARDO POR MAIORES INFORMACOES, DESDE JA AGRADEÇO PELA SUA ATENÇÃO A MINHA DUVIDA. OBRG


Paullsoftware
   - 15 mar 2006

se quizer impressão direta, eu ví esse código em um exemplo do site antigo da ClubeDelphi...

o nome do Aplicativo era CD-Vendas com código fonte selecionei uma parte do código:

Essa procedure cria a nota a ser impressa
#Código

Procedure TFrmNota.Nota;
Var
VarTotal:Real;
I:Integer;
Codigo,Produto,Qtd,Preco,Total,ICMS,IPI:String;
Arq:TextFile;
Numero,Vendedor,Data,FormaPag,
Cliente,CGC,CPF,IE,
Endereco,Bairro,Cidade,
Estado,CEP,Obs:String;
Begin
Obs:=TbPedidosObservacao.Value;
Numero:=IntToStr(TbPedidosNumero.Value);
For I:=Length(Numero) to 25 do
Numero:=Numero+´ ´;
Data:=DateToStr(TbPedidosDataPed.Value);
For I:=Length(Data) to 25 do
Data:=Data+´ ´;
FormaPag:=TbPedidosFormaPag.Value;
Cliente:=TbPedidosCliente.Value;
CGC:=TbPedidosCGC.Value;
For I:=Length(CGC) to 25 do
CGC:=CGC+´ ´;
CPF:=TbPedidosCPF.Value;
IE:=TbPedidosIE.Value;
Bairro:=TbPedidosBairro.Value;
For I:=Length(Bairro) to 25 do
Bairro:=Bairro+´ ´;
Cidade:=TbPedidosCidade.Value;
Endereco:=TbPedidosEndereco.Value;
Estado:=TbPedidosEstado.Value;
For I:=Length(Estado) to 25 do
Estado:=Estado+´ ´;
Cep:=TbPedidosCEP.Value;
Vendedor:=TbPedidosVendedor.Value;
AssignFile(Arq,´LPT1´);//Substitua aqui por ´C:\TesteNota.Txt´ para testar sem impressora
ReWrite(Arq);
Writeln(Arq,´--------------------------------------------------------------------------------´);
Writeln(Arq,´Pedido APL MASTER ´);
Writeln(Arq,´ RUA PRIMEIRO DE MARCO, 120/602 ´);
Writeln(Arq,´ CENTRO-RIO DE JANEIRO-RJ-CEP: 20010-000 ´);
Writeln(Arq,´ TELEFONES: 253-5293 253-5416 233-5084 FAX: 233-6505 ´);
Writeln(Arq,´--------------------------------------------------------------------------------´);
Writeln(Arq,´´);
Writeln(Arq,´´);
Writeln(Arq,´´);
Writeln(Arq,´Numero: ´+Numero+´Vendedor: ´+Vendedor);
Writeln(Arq,´Data: ´+Data+´Forma de Pagamento: ´+FormaPag);
Writeln(Arq,´Cliente: ´+Cliente);
Writeln(Arq,´CGC: ´+CGC+´Insc. Estadual: ´+IE);
Writeln(Arq,´CPF: ´+CPF);
Writeln(Arq,´Endereco: ´+Endereco);
Writeln(Arq,´Bairro: ´+Bairro+´Cidade: ´+Cidade);
Writeln(Arq,´Estado: ´+Estado+´CEP: ´+CEP);
Writeln(Arq,´´);
Writeln(Arq,´´);
Writeln(Arq,´--------------------------------------------------------------------------------´);
Writeln(Arq,´Codigo Produto QTD Preco Total ICMS IPI´);
Writeln(Arq,´--------------------------------------------------------------------------------´);
TbItens.First;
While not TbItens.Eof do
Begin
Codigo:=IntToStr(TbItensCodProduto.Value);
Produto:=TbItensProduto.Value;
Qtd:=IntToStr(TbItensQuantidade.Value);
Preco:=FloatToStrF(TbItensPreco.Value,FFNumber,15,2);
Total:=FloatToStrF(TbITensTotal.Value,FFNumber,15,2);
ICMS:=´0´;
IPI:=´0´;
For I:=Length(Codigo) to 6 do
Codigo:=Codigo+´ ´;
For I:=Length(Produto) to 35 do
Produto:=Produto+´ ´;
For I:=Length(Qtd) to 7 do
Qtd:=´ ´+Qtd;
For I:=Length(Preco) to 8 do
Preco:=´ ´+Preco;
For I:=Length(Total) to 9 do
Total:=´ ´+Total;
Writeln(Arq,Codigo+Produto+QTD+Preco+Total+´ 0 0´);
TbItens.Next;
End;
For I:=TbItens.RecordCount to 30 do
begin
Writeln(Arq,´´);
end;
Writeln(Arq,´--------------------------------------------------------------------------------´);
VarTotal:=0;
TbItens.First;
While not TbItens.Eof do
Begin
VarTotal:=VarTotal+TbItensTotal.Value;
TbItens.Next;
End;

Writeln(Arq,´Valor ICMS: 0,00 Valor IPI: 0,00 Total do Pedido: ´+FloatToStrF(VarTotal,FFNumber,15,2));
Writeln(Arq,´--------------------------------------------------------------------------------´);
Writeln(Arq,´Observacoes:´);
Writeln(Arq,Obs);
For I:=TbPedidosLinhas.Value to 6 do
Begin
Writeln(Arq,´´);
End;
Writeln(Arq,´--------------------------------------------------------------------------------´);
CloseFile(arq);
end;


para chamar o código faça de duas maneiras
Itens selecionados na Grid
#Código
procedure TFrmNota.SpeedButton2Click(Sender: TObject);
Var
I:Integer;
begin
if DbGrid1.SelectedRows.Count>0 then
Begin
for I:=0 to DBGrid1.SelectedRows.Count-1 do
begin
DbGrid1.DataSource.DataSet.GotoBookmark(Pointer(DbGrid1.SelectedRows.items[I]));
if TbPedidos.Locate(´Numero´,DbGrid1.DataSource.DataSet.Fields[0].AsInteger,[]) then
Begin
Nota;
End;
end;
End;
end;

ou todos os itens da Grid
#Código
TbPedidos.First;
While not TbPedidos.eof do
Begin
Nota;
TbPedidos.Next;
End;
DbGrid1.SelectedRows.Clear;
end;


espero ter te ajudado! :wink:


Amarildo
   - 15 mar 2006

Ola Paull, fico grato pela atenção e ajuda, esse exemplo foi demais, vou estar inserindo para verificar o que posso estar ajustando, valeu mesmo, felicidades e sucesso


Amarildo
   - 15 mar 2006

Ola Paull, fico grato pela atenção e ajuda, esse exemplo foi demais, vou estar inserindo para verificar o que posso estar ajustando, valeu mesmo, felicidades e sucesso


Amarildo
   - 15 mar 2006

Ola Paull, fico grato pela atenção e ajuda, esse exemplo foi demais, vou estar inserindo para verificar o que posso estar ajustando, valeu mesmo, felicidades e sucesso