Array
(
)

Imprimir apenas registros desejados.

Peninha
   - 01 out 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.


Aroldo Zanela
   - 01 out 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.

#Código

select * from tabela
where imprimir = ´Sim´



Peninha
   - 04 out 2004

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


Danielclubedelphi
   - 04 out 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...


Peninha
   - 04 out 2004

Amigo não sou experiente em Delphi, portanto estou tentando desta forma:
#Código

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.


Aroldo Zanela
   - 04 out 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:

#Código

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;



Peninha
   - 04 out 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.


Otto
   - 04 out 2004

então..


#Código

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



funcionou?!


Peninha
   - 06 out 2004

Caro amigo, tentei com seu código mas não funcionou.
Fiz desta forma:#Código


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.

Citação:

[Error] U_Notas_geradas.pas(38): ´)´ expected but identifier ´S´ found


Peninha


Rjun
   - 06 out 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;


Peninha
   - 06 out 2004

Bom galera fiz assim.
#Código

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.


Kenshindigital
   - 06 out 2004

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

#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;



Peninha
   - 08 out 2004

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