Imprimir apenas registros desejados.

Delphi

01/10/2004

Pessoal, tenho um dbgrid que esta ligado a uma tabela de Nota_Fatura, gostaria de saber se posso mostrar neste DbGrig apenas os registros que o campo
´ Imprimir ´ esteja marcado como ´Sim´.
E também quando este registro for impresso ele saia do DbGrid, sem que saia da minha tabela.
Será que alguém pode me ajudar nesta?
Elmarinho.
P.S
Trabalho com Interbase e os componentes são IbTable e IbQuery.


Peninha

Peninha

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

01/10/2004

Colega,

Usando a query abaixo vai produzir o resultado que você deseja. Após efetuar a atualização (Imprimir := ´Não´), basta fechar e abrir a query novamente.

select * from tabela
where imprimir = ´Sim´



GOSTEI 0
Peninha

Peninha

01/10/2004

Caro Aroldo, infeliamente não consegui fazer que funcione com a sua dica, será que poderia me explicar melhor.
Peninha.


GOSTEI 0
Danielclubedelphi

Danielclubedelphi

01/10/2004

Na sua tabela tem um campo ´imprimir´ ? Então, quando vc acaba de imprimir um registro, vc vai no banco e grava um ´não´ nesse campo... e fecha a query e abre novamente... ai só vão aparecer os campos que tem o ´sim´.

É exatamente o que o Aroldo disse...


GOSTEI 0
Peninha

Peninha

01/10/2004

Amigo não sou experiente em Delphi, portanto estou tentando desta forma:
begin
   With DmBasedados.IBQ_NotaFatura Do
       Begin
         Close;
         Sql.Clear;
         Sql.Add(´Select * From Tab_NotaFatura Where Numero_Fatura =:ParamNumFatura´);
         Sql.Add(´Where Imprimir = S´);
         ParamByname(´ParamNumFatura´).AsInteger:=DbGrid1.Fields[0].asInteger;
         Open;
         DmBasedados.IBTab_NotaIMPRIMIR.AsString:=´N´;
         Close;

      End;

Só que não esta funcionando.
Causa um erro com o commando WHERE.
Peninha.


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

01/10/2004

Colega,

Não entendi exatamente seu código, mas o erro em relação ao WHERE e a existência de duas declarações e falta do operador AND.

Exemplo:

begin 
   With DmBasedados.IBQ_NotaFatura Do
       Begin
         Close;
         Sql.Clear;
         Sql.Add(´Select * From Tab_NotaFatura Where Numero_Fatura =:ParamNumFatura´);
         Sql.Add(´and Imprimir = ´ + QuotedStr(´S´));
         ParamByname(´ParamNumFatura´).AsInteger:=DbGrid1.Fields[0].asInteger;
         Open;
         DmBasedados.IBTab_NotaIMPRIMIR.AsString:=´N´;
         Close;
      End;



GOSTEI 0
Peninha

Peninha

01/10/2004

Amigos, vou tentar explicar novamente.
Tenho uma Tabela um form que gera as notas a serem impressas. Em outro form tenho um DbGrid que mostra mostra todas as notas geradas, mas gostaria que o DbGrid mostrasse apenas as notas que o ´campo´ Imprimir estivessem marcadas com o ´S´ as que estiverem marcadas com ´N´ não seria preciso mostrar. E mais, todas as notas que forem mandadas para impressão saissem do DbGrig, ou seja, se não houver notas marcadas com o campo ´Imprimir´ em ´S´ então o DbGrid tem que estar limpo sem apresentar nenhum registro.
Já tentei algums formas de Query mas não consegui.
Se ainda não fui claro, favor pedir mais detalhes.
Peninha.


GOSTEI 0
Otto

Otto

01/10/2004

então..


Query1.Close;
Query1.SQL.Text := ´select * from tabela where imprimir = ´+QuotedStr(´S´);
Query1.Open



funcionou?!


GOSTEI 0
Peninha

Peninha

01/10/2004

Caro amigo, tentei com seu código mas não funcionou.
Fiz desta forma:
  DmBasedados.IBQ_NotaFatura.Close;
         DmBasedados.IBQ_NotaFatura.SQL.Clear;
         DmBasedados.IBQ_NotaFatura.SQL.Add(´Select * From Tab_NotaFatura Where Imprimir=´S´´);
         DmBasedados.IBQ_NotaFatura.SQL.Add(´Select * From Tab_NotaFatura Where Imprimir=´S´ And Impresso=´N´´);
         DmBasedados.IBQ_NotaFatura.Refresh;
         Open;

E também não funcionou, não consigo nem se quer rodar o programa.
Gera este erro.
[Error] U_Notas_geradas.pas(38): ´)´ expected but identifier ´S´ found

Peninha


GOSTEI 0
Rjun

Rjun

01/10/2004

Faz da seguinte maneira :

DmBasedados.IBQ_NotaFatura.Close;
DmBasedados.IBQ_NotaFatura.SQL.Clear;
DmBasedados.IBQ_NotaFatura.SQL.Add(´Select * From Tab_NotaFatura Where Imprimir=´´S´´´);
DmBasedados.IBQ_NotaFatura.SQL.Add(´Select * From Tab_NotaFatura Where Imprimir=´´S´´ And Impresso=´´N´´´);
DmBasedados.IBQ_NotaFatura.Refresh;
Open;


GOSTEI 0
Peninha

Peninha

01/10/2004

Bom galera fiz assim.
With DmBasedados.IBQ_NotaFatura Do
       Begin
         Close;
         Sql.Clear;
         Sql.Add(´Select * From Tab_NotaFatura Where Nome_RazaoSocial =:ParamNome´);
         ParamByname(´ParamNome´).AsString:=DbGrid1.Fields[0].AsString;
         Open;
       End;
       DbGrid1.Fields[0].Clear;
       Application.CreateForm(TFrmRel_NotaFatura,Frmrel_NotaFatura);
       FrmRel_NotaFatura.QuickRep1.Preview;

Só que ele esta limpando o conteudo do meu campo na minha tabela.
Quando vou la tabela, esta sem o nome do cliente.
Peninha.


GOSTEI 0
Kenshindigital

Kenshindigital

01/10/2004

tente (so refiz sua sintaxe, não mudei o código)

begin 
   With DmBasedados.IBQ_NotaFatura Do 
       Begin 
         Close; 
         Sql.Clear; 
         Sql.Add(´Select * From Tab_NotaFatura Where (Numero_Fatura =:ParamNumFatura)and (Imprimir = ´´S´´)´); 
         ParamByname(´ParamNumFatura´).AsInteger:=DbGrid1.Fields[0].asInteger; 
         Open; 
         DmBasedados.IBTab_NotaIMPRIMIR.AsString:=´N´; 
         Close; 

      End; 



GOSTEI 0
Peninha

Peninha

01/10/2004

Não amigo, infelizmente não funcionou.
Peninha.


GOSTEI 0
POSTAR