15/03/2006

Imprimir um Dbgrid

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


Amarildo

Respostas

15/03/2006

Paullsoftware

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
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
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&93;));
        if TbPedidos.Locate(´Numero´,DbGrid1.DataSource.DataSet.Fields&91;0&93;.AsInteger,&91;&93;) then
         Begin
          Nota;
         End;
     end;
  End;
end;

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


espero ter te ajudado! :wink:


Responder Citar

15/03/2006

Amarildo

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


Responder Citar

15/03/2006

Amarildo

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


Responder Citar

15/03/2006

Amarildo

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


Responder Citar