Exibindo registros em DBGrid

Delphi

18/01/2004

Aproveito para lançar um novo tópico. Caras, como posso fazer para que o DBGrid mostre apenas os registros que contenham um valor iugal (Numero da Nota Fiscal por exemplo). Quais componentes tenho que usar?


Sempre obtive ajuda imprescindivel aqui... tenho certeza q vao me ajudar nessa tb!!!


PS.: Volto amanhã ao Clube, mas não exitem em responder, por gentileza!

Valeu!!


Diorgenes175

Diorgenes175

Curtidas 0

Respostas

Marco Salles

Marco Salles

18/01/2004

Use Um Query e Faca Uma Pesquisa Onde a Condição Seja O Numero Da Nota Fiscal , Como Voce Mencionou Anteriormente. É Claro Que Voce Deve Ter Um DbGrid Concatenado Com Um DataSource e Este Concatenado Com O Query. O Que Acontece, Que é Muito Bonito Eu (ou Outro) Responder a Sua Pergunta, Sugerindo Que Voce Use Um Query. Dá Para Perceber Pelo Teor Dá Sua Dúvida, Que Voce Deve Estar, Pouco Familarizado Como a Linguagem Sql. Então Para Fazer Um Exemplop Real Nós Precissamos De Dados Reais. Ou Voce Me Passa Uma Tabela Como Os Campos, Ou Eu Te Sugiro Uma (Das Tantas Que Existem No Delphi), e Realizamos Uma Seleção Juntos. Por Mais Estou ao Seu Inteiro Dispor


GOSTEI 0
Diorgenes175

Diorgenes175

18/01/2004

Meu, não sou um ´expert´ em SQL mas não to tao desfamiliarizado assim. Eu já to usando o TADOQuery (BD MS Access) com um DataSource ligado a ele e o DBGrid ligado ao DataSource. Desculpe eu não ter colocado codigos e não ter dito isso.

Na propriedade SQL do Query tenho:

SELECT * FROM TbEntradas


Na procedure do Form Tenho:

Uses
procedure Mostrar_Itens (Codigo : String);

.
.
.

//OBS .: A indexação é feita pelo Cod do Movimento.

procedure TFrmEntradasProdutos.Mostrar_Itens(Codigo: String);
Var
bmkRegistro: TBookMark;
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add (´ SELECT Codigo, CodMov FROM TbEntradas WHERE CodMov =´ + QuotedStr(Codigo ));
QryItensNF.Open;


Except
On e:exception Do
begin
messagedlg(´Erro ao localizar Registro!´ + #1310 + e.message,mterror,[mbok],0);
QryItensNF.Close ;
end;
End;


Para fazer rodar a procedure tenho:

procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
var
CodMov: String;
begin
CodMov:= EdtCodigo.Text;
QryItensNF.Open;
QryItensNF.Locate(´Codigo´, CodMov, [loPartialKey]);
end;
end.

Tentei primeiramente este código, como não deu fiz o seguinte:

procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
begin
Mostrar_Itens(EdtCodigo.Text);
end;

deste jeito eu digitava um codigo de movimento q eu sabia que existia ele ele teoricamente era p buscar. O q ocorre é que ele não valida a condição, ou seja, ele não busca referenciado pela condição. Ele busca todos os registros da tabela, para isso basta ter um campo com um valor qq para ele se referenciar. Por que ocorre isso? É isso o que eu quero saber, como posso solucionar esse problema?

Desculpe não ter informado detalhes... É q na correria...

Valeu!!!


Valeu


GOSTEI 0
Marco Salles

Marco Salles

18/01/2004

Também Não Sou Um Expert No Assunto. Mas Acho Que Esta Faltando Alguns Detalhezinho No seu Método : Mostrar_Itens(Codigo: String); Vamos Tentar Fazer Algumas Pequenas Modificaçôes e Vamos Ver Se Atende a Sua Necessidade:

procedure TFrmEntradasProdutos.Mostrar_Itens(Codigo:String);
Var
bmkRegistro: TBookMark; //Acho denecessári para a conjuntura atual :?:
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add (´ SELECT Codigo, CodMov FROM TbEntradas´)
QryItensNF.Sql.Add(´Where CodMov=CodigoPesquisado´);
QryItensNF.ParamByName(´CodigoPesquisado´).asInteger:=StrToInt
* (Codigo)
QryItensNF.Prepare;
QryItensNF.Open;


Except
On e:exception Do
begin
messagedlg(´Erro ao localizar Registro!´ + #1310 + e.message,mterror,[mbok],0);
QryItensNF.Close ;
end;
End;

// a procedure abaixo esta ok...

procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
begin
Mostrar_Itens(EdtCodigo.Text);
end;


e finalmente....Rode o Programa e Veja Se Ele Esta Validando Agora. Se Os Componetes Datasoure, DbGrid e o Query Estiverem Corretamente Conectados, Acho Que Não Terã Problemas. Mas Qualque Comentário Por Favor Me Comunique.


GOSTEI 0
Diorgenes175

Diorgenes175

18/01/2004

Tchê, ta acontecendo um erro na linha:

QryItensNF.ParamByName(´CodigoPesquisado´).asInteger:=StrToInt *(Codigo);

Ele não reconhece a propriedade ´ParamByName´, considerando ´variável não declarada´. Tentei colocar ´ParamentByName´ e não adiantou ocorrendo o mesmo erro. Tem alguma solução pra isso? Aproveita e me explica nessa linha o termo: ´* (Codigo);´.

Outra: Posso colocar em vez de ´CodigoPesquisado´ somente ´Codigo´, pois é como foi referenciado no título da Procedure???

Valeu a ajuda!!!


GOSTEI 0
Marco Salles

Marco Salles

18/01/2004

Desculpe Mas Náo Tem O´Asterisco´ Te Fiz Confusão..Escreva Sem O
Asterico
QryItensNF.ParamByName(´CodigoPesquisado´).asInteger:=StrToInt (Codigo);

Acredita , Voce Vai Conseguir. Não Desanime.....


GOSTEI 0
Diorgenes175

Diorgenes175

18/01/2004

Cara, mesmo assim não compilou. Ele não reconhece ´ParamByName´, considerando ´variável não declarada´. Tentei colocar ´ParamentByName´ e não adiantou ocorrendo o mesmo erro. Tem alguma solução pra isso? E, eu posso colocar em vez de ´CodigoPesquisado´ somente ´Codigo´, pois é como foi referenciado no título da Procedure???

Desculpa incomodar

Valeu a ajuda!!


GOSTEI 0
Marco Salles

Marco Salles

18/01/2004

Cara Vamos Continuar Tentando. Alguma Coisa Deve Estar errada. Responda Para Mim , Faça as Alterações Abaixo e Me Retorne O Quanto Antes.

procedure [color=red:ef449a85c1]TFrmEntradasProdutos.Mostrar_Itens; [/color:ef449a85c1]
Var
bmkRegistro: TBookMark; //Acho denecessári para a conjuntura atual
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add [color=red:ef449a85c1](´ SELECT *FROM TbEntradas´) [/color:ef449a85c1]
QryItensNF.Sql.Add(´Where CodMov=CodigoPesquisado´);
QryItensNF.ParamByName(´CodigoPesquisado´).asInteger:=StrToInt [color=red:ef449a85c1](EdtCodigo.Text) [/color:ef449a85c1]
QryItensNF.Prepare;
QryItensNF.Open;

Except
On e:exception Do
begin
messagedlg(´Erro ao localizar Registro!´ + #1310 + e.message,mterror,[mbok],0);
QryItensNF.Close ;
end;
End;

// [color=red:ef449a85c1]Escreva Alguma Coisa No Edit1 e Click No Botão[/color:ef449a85c1]

procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
begin
[color=red:ef449a85c1]Mostrar_Itens; [/color:ef449a85c1]
end;

Tentei Selecionar As Alterações Que Fiz Em Vermelho...

p:s Na Sua Tabela Voce Tem Um Campo Chamado De ´[color=red:ef449a85c1]CodMov´[/color:ef449a85c1] :?: Não Tem :?:

p:s Não é Bicho DeSete Cabeça

Obs : Pode Ter Certeza Que Irá Funcionar.

Quando Compilar e Funcionar Entramos Em Mais Detalhes.


GOSTEI 0
Diorgenes175

Diorgenes175

18/01/2004

type
procedure Mostrar_Itens;
.
.
.


procedure TFrmEntradasProdutos.Mostrar_Itens;
begin
Try
QryItensNF.Close;
QryItensNF.SQL.Clear ;
QryItensNF.SQL.Add (´ SELECT * FROM TbEntradas´);
QryItensNF.Sql.Add(´Where CodMov=CodigoPesquisado´);
QryItensNF.ParamByName(´CodigoPesquisado´).asInteger:=StrToInt (EdtCodigo.Text);
QryItensNF.Prepare;
QryItensNF.Open;


Except
On e:exception Do
begin
MessageDlg(´Erro ao localizar Registro!´ + #1310 + e.message,mterror,[mbok],0);
QryItensNF.Close ;
end;
End;

end;


procedure TFrmEntradasProdutos.BtnAdicionarClick(Sender: TObject);
begin
Mostrar_Itens;
end;


Tchê, o erro que ocorre é onde diz ´ParamByName´ (QryItensNF.ParamByName(´CodigoPesquisado´).asInteger:=StrToInt (EdtCodigo.Text);). Ele considera variável não declarada. Será q não tem q ter alguma outra propriedade antes de ´ParamByName´, tipo: QryItensNF.(...).ParamByName...???
Tenho sim na tabela de entradas de produtos um campo chamado ´CodMov´.

PS.: Não sei se volto hoje ainda ao forum, mas amanha com certeza!!!

Valeu a Ajuda!

Desculpa incomodar!!


GOSTEI 0
Marco Salles

Marco Salles

18/01/2004

Amigo Falta Um PONTINHO Só, Um Misero PONTO Para Confudir Toda a Nossa Cabeça.. Na Instruçaõ:

QryItensNF.Sql.Add(´Where CodMov=CodigoPesquisado´);

O Certo é

[color=red:924bcf7eff]QryItensNF.Sql.Add(´Where CodMov = :CodigoPesquisado´); [/color:924bcf7eff]


Rapaz , Agora Vai. Não É Possivel :P

Obs: Eu Que Errei Ao Te Enviar a Primeira Instrução :oops: Mas Agora Acredito Que Vai..


GOSTEI 0
Marco Salles

Marco Salles

18/01/2004

[quote:2440439230=´Marco Salles´]Amigo Falta Um PONTINHO Só, Um Misero PONTO Para Confudir Toda a Nossa Cabeça.. Na Instruçaõ:

QryItensNF.Sql.Add(´Where CodMov=CodigoPesquisado´);

O Certo é

[color=red:2440439230]QryItensNF.Sql.Add(´Where CodMov = :CodigoPesquisado´); [/color:2440439230]


Rapaz , Agora Vai. Não É Possivel :P

Obs: Eu Que Errei Ao Te Enviar a Primeira Instrução :oops: Mas Agora Acredito Que Vai..[/quote:2440439230]

Sabe. Depois Eu Fiquei Pensando Nisso Tudo E Apesar Dos Incríveis Erros Que Lhe Passei (O Primeiro Foi o Asterisco e Depois a Aunsencia Do Ponto Na Instrução Anterior) Chegou a Hora De Raciocinar.
1)A Falta Do Ponto Não Era Para Dar Erro Na Compilação, Mas Sim Na
Execução. Voce Diz Que Nen Compila :?:
2) O Metodo [color=red:2440439230]ParamByName [/color:2440439230]é Um Metodo Da Query, Isto é No Projeto Digite [color=red:2440439230]QryItensNF [/color:2440439230]Depois De Um Ponto Ficando Assim: QryItensNF[color=red:2440439230].[/color:2440439230] Abre-se o Editor De Codigo, Digite Então ´pa´ Ficando-seAssim: QryItensNF.[color=red:2440439230]Pa [/color:2440439230]
Nesse Exato Momento Dá Para Ver o Metodo Aparecer.. Então Se Ele Existe Ele Tem Que Ser Compilado Desde Que Devidamemte Preenchido.
Responda Para Mim . O Método ´ParamByName´ Aparece No Seu Editor De CÓDIGO :?: Eu Espero Que Ele Apareça e Sua Descrição é Esta Que Eu Lhe Passei...Observe Estes Detalhes e Passa Para Mim. Boa Noite


GOSTEI 0
Diorgenes175

Diorgenes175

18/01/2004

Meu, analisa só isso:
Em todos os meus formulários, no botão Sair faço uma verificação se a tabela está em modo de Edição ou de Inserção (DsEdit / DsInsert). Estes comandos (DsEdit / DsInsert) são considerados ´variáveis não declaradas´ se não incluirmos na Uses ´DB´. Pois bem, o q tem isso a ver? Tem q eh o mesmo erro (variavel não declarada) q ocorre com essa Query. Aí eu te pergunto: Será q não tem q incluir alguma clausula na Uses???? O metodo ´ParamByName´ não aparece no Editor de Código. Por isso eu to achando q tem q ter alguma coisa na Uses. Pode ser locura, mas... Ah, e eu ja tentei colocar como comentario essa linha p compilar, e ele aponta para o mesmo erro para o metodo ´Prepare´ na linha de baixo. Pra compilar so deixando essas 2 linhas como comentario...

Valeu a ajuda!!!


GOSTEI 0
Marco Salles

Marco Salles

18/01/2004

Voce Tá Usando O TADOQuery Ou Um Query (Paleta Data Acess) :?:


GOSTEI 0
Diorgenes175

Diorgenes175

18/01/2004

Meu, se tu for conferir na minha SEGUNDA mensagem eu refiro q uso TADOQuery (Base de Dados MS Access).

:-/

Se o erro for por isso, eh so me conseguir as coordenadas, e já era...
eheheeh!!

Não dá Nada!!!

De qq forma Agradeço a ajuda!!!!

Desculpa incomodar!!


GOSTEI 0
Marco Salles

Marco Salles

18/01/2004

O Erro Então Era Por Causa Disto.... Claro Que Houve Erro no Asterisco, Na Falta De Ponto Da Instrução etc....Mas Nada Que Não Compilasse...Sugeria Voce Que Encerrasse Este Tópico e Cria-se Um Novo Tópico , Detalhando o que Voce Quer com o Que Voce Usa Com o que Voce Tem...Este NovoTópico Seria Para Que Outras Pessas Com Outras Idéia Possam Participar... Ficamos Num Monologo, Não Que Tenha Sido Desagradável, Mas Foi Pouco Produtivo e Com Muitos Erros... No Mais Quero De Agradecer Tambem a Sua Atenção.


GOSTEI 0
Marco Salles

Marco Salles

18/01/2004

O Erro Então Era Por Causa Disto.... Claro Que Houve Erro no Asterisco, Na Falta De Ponto Da Instrução etc....Mas Nada Que Não Compilasse...Sugeria Voce Que Encerrasse Este Tópico e Cria-se Um Novo Tópico , Detalhando o que Voce Quer com o Que Voce Usa Com o que Voce Tem...Este NovoTópico Seria Para Que Outras Pessas Com Outras Idéia Possam Participar... Ficamos Num Monologo, Não Que Tenha Sido Desagradável, Mas Foi Pouco Produtivo e Com Muitos Erros... No Mais Quero te Agradecer Tambem a Sua Atenção.


GOSTEI 0
Marco Salles

Marco Salles

18/01/2004

O Erro Então Era Por Causa Disto.... Claro Que Houve Erro no Asterisco, Na Falta De Ponto Da Instrução etc....Mas Nada Que Não Compilasse...Sugeria Voce Que Encerrasse Este Tópico e Cria-se Um Novo Tópico , Detalhando o que Voce Quer com o Que Voce Usa Com o que Voce Tem...Este NovoTópico Seria Para Que Outras Pessas Com Outras Idéia Possam Participar... Ficamos Num Monologo, Não Que Tenha Sido Desagradável, Mas Foi Pouco Produtivo e Com Muitos Erros... No Mais Quero Agradecer Tambem a Sua Atenção...


GOSTEI 0
POSTAR