01/10/2004

Imprimir apenas registros desejados.

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

Respostas

01/10/2004

Aroldo Zanela

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´



Responder Citar

04/10/2004

Peninha

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


Responder Citar

04/10/2004

Danielclubedelphi

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...


Responder Citar

04/10/2004

Peninha

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&93;.asInteger;
         Open;
         DmBasedados.IBTab_NotaIMPRIMIR.AsString:=´N´;
         Close;

      End;

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


Responder Citar

04/10/2004

Aroldo Zanela

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&93;.asInteger;
         Open;
         DmBasedados.IBTab_NotaIMPRIMIR.AsString:=´N´;
         Close;
      End;



Responder Citar

04/10/2004

Peninha

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.


Responder Citar

04/10/2004

Otto

então..


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



funcionou?!


Responder Citar

06/10/2004

Peninha

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


Responder Citar

06/10/2004

Rjun

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;


Responder Citar

06/10/2004

Peninha

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&93;.AsString;
         Open;
       End;
       DbGrid1.Fields&91;0&93;.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.


Responder Citar

06/10/2004

Kenshindigital

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&93;.asInteger; 
         Open; 
         DmBasedados.IBTab_NotaIMPRIMIR.AsString:=´N´; 
         Close; 

      End; 



Responder Citar

08/10/2004

Peninha

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


Responder Citar