Ir para conteúdo
Fórum Script Brasil
  • 0

Formulário não filtra dados


nsouza

Pergunta

Colegas

tenho um formulario MaterialGastro com os campos edtOrdemServiço (TDEdit)

tenho tabem um datagrid com os campos

IdOrdemServilo (chave estrangeira)

Descricao

Valor

Gostaria que quando eu digita a OS numero 001 no formulario so aparecesse o material da OS 001 no data grind

mas esta aparecendo a da OS 002

Usei a propriedade Master Source ligando a IDOs (tblOrdemServico-chave primaria) ligando a IDos(chave estrangeira da tblMaterialGasto)

mas ainda não esta filtrando, o que fiz de errado?

Quando navego e pula para OS 002 não filtra.

Obrigado

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
tenho tabem um datagrid com os campos

IdOrdemServilo (chave estrangeira)

Descricao

Valor

Você fala em datagrid - estamos falando de programação .NET? Se for um programa Win32, o componente seria um DBGrid. Faz diferença saber isto.

Gostaria que quando eu digita a OS numero 001 no formulario so aparecesse o material da OS 001 no data grind

mas esta aparecendo a da OS 002

Usei a propriedade Master Source ligando a IDOs (tblOrdemServico-chave primaria) ligando a IDos(chave estrangeira da tblMaterialGasto)

mas ainda não esta filtrando, o que fiz de errado?

Quando navego e pula para OS 002 não filtra.

O sentido de ligação é do detalhe para o mestre, ou seja, o seu dataset tblOrdemServico deve apontar para o MasterSource do dataset tblMaterialGasto (se não entendi errado quem é mestre e detalhe).

Vocês está usando um DBGrid para a edição dos dados? Se for, você quer digitar o número da OS em uma coluna e visualizar os dados dela em outras duas colunas?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
tenho tabem um datagrid com os campos

IdOrdemServilo (chave estrangeira)

Descricao

Valor

Você fala em datagrid - estamos falando de programação .NET? Se for um programa Win32, o componente seria um DBGrid. Faz diferença saber isto.

Gostaria que quando eu digita a OS numero 001 no formulario so aparecesse o material da OS 001 no data grind

mas esta aparecendo a da OS 002

Usei a propriedade Master Source ligando a IDOs (tblOrdemServico-chave primaria) ligando a IDos(chave estrangeira da tblMaterialGasto)

mas ainda não esta filtrando, o que fiz de errado?

Quando navego e pula para OS 002 não filtra.

O sentido de ligação é do detalhe para o mestre, ou seja, o seu dataset tblOrdemServico deve apontar para o MasterSource do dataset tblMaterialGasto (se não entendi errado quem é mestre e detalhe).

Vocês está usando um DBGrid para a edição dos dados? Se for, você quer digitar o número da OS em uma coluna e visualizar os dados dela em outras duas colunas?

Abraços

Estou usando o TDBGrid, desculpe.

Eu preciso do seguinte:

digitar o numero da OS no campo edtOrdemServico e o dbgrid mostrar os dados relacionados a esta OS.

Na verdade Micheus, quebrei cabeça e consegui fazer o filtro, adicionei um query no TDBGrid, meu problema agora ´´e o seguinte.

Quando a ordem de serviço não existir ele me retornar a mensagem " Ordem de Serviço não existe!"

tentei fazer desta forma:

if key = #13 then

begin

dm.tblOrdemServico.Close;

dm.tblOrdemServico.open;

o formulario onde coloquei este codigo esta acoplado a tblMaterial que tem a chave estrangeira da tabela tblOrdemServico

Esta linha consulta na tabela tblOrdemServico, se existe numero da ordem de servico

if (StrToInt(edtOrdemSevico.Text)) = dm.tblOrdemServico.FieldByName('IDOS').AsInteger then

begin

ShowMessage('Ordem de serviço não existe');

dbDescricao.Clear;

edtOrdemSevico.SetFocus;

exit;

end

else

begin

aqui execute uma procedure

material;

end

end;

Qual o resultado deste codigo:

quando digito a OS 1 retorna a mensagem " Ordem de Serviço não existe!" - Mas esta OS existe

quando digito a OS 2,3,4,5 o DBGrid atualiza

Quando digito uma OS que não existe por exemplo 21, o DBGRID, fica branco ao invés de retornar a mensagem " Ordem de Serviço não existe!"

Este agora e o problema!

Editado por nsouza
Link para o comentário
Compartilhar em outros sites

  • 0
Eu preciso do seguinte:

digitar o numero da OS no campo edtOrdemServico e o dbgrid mostrar os dados relacionados a esta OS.

Na verdade Micheus, quebrei cabeça e consegui fazer o filtro, adicionei um query no TDBGrid, meu problema agora ´´e o seguinte.

Quando a ordem de serviço não existir ele me retornar a mensagem " Ordem de Serviço não existe!"

tentei fazer desta forma:

if key = #13 then

begin

dm.tblOrdemServico.Close;

dm.tblOrdemServico.open;

nsouza, vamos em etapas porque acho que tem coisa demais aqui para o que você quer fazer.

No DBGrid você vai mostrar o resultado da tal query, certo?

Então, esta query deve ter uma parâmetro onde você o iniciliza com o valor digitato no seu edtOrdemServico e depois abre a query. Isto feito, duas coisas podem ocorrer: os dados aparecerem no grid ou não aparecer nada nele.

Se aparece alguma coisa, então se "olharmos" a propriedade RecordCount obteremos um valor maior que 0 (zero); caso não apareça nada, este valor será 0.

Assim, este seria o teste que você deveria fazer para mostrar a mensagem. Logo após abrir a consulta você testa esta propriedade e se for zero mostra a mensagem.

Esta tal tblOrdemServico seria a sua query? É o que parece pelo que você "fala" no post, mas não é o que parece pela nomenclatura - tbl, sugere que seja uma tabela (table).

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Exatamente, é isso que acontece o grid, você estendeu.

Quanto a tblOrdemServico você tb esta certo é uma tabela.

>A tblOrdemServico tem a chave primaria IDOS

>A tblMaterialGasto tem uma chave primaria IDMaterial e um chave estrangeira IDOs

> O campos do meu formulário estão ligados a tblMaterialGasto,

no formulário eu digito no campo edtOrdemServico e o grid que esta ligado a qryMaterialGasto, mostra os valores

>Eu preciso que quando digito o numero da O.S no campo edtOrdemServico ele atualiza o grid, mas se o numero da OS não existir na tabela principal tblOrdemServico, ele retorna a mensagem conforme lhe expliquei.

obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

nsouza, eu não entendi exatamente como esta sua tela está funcionando, já que no formulário estão o campo ligados à tblMaterialGasto e no grid você quer mostrar o resultado da query qryMaterialGasto. Mas, em todos os casos, esta sua query teria que filtrar o campo IDOS da tabela MaterialGasto baseado no valor que você digitou no campo edtOrdemServico - seria uma consulta parametrizada.

Então no evento OnExit do edtOrdemServico, voce poderia fechar a consulta, inicializar o parâmetro da query com o valor digitado e depois abrir a consulta. Se a consulta estiver vazia é sinal de que não há informações e você pode mostrar a mensagem do contrário, os itens estarão no grid.

É basicamente a mesma "lenga-lenga" que tratamos no seu outro tópico: Impedir número já registrado, especificamente neste post

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...