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

(Resolvido) Uso de campo do formulário numa clausula WHERE


allit

Pergunta

Olá,

Sou novo em Access e estou com dificuldade para usar o conteúdo de um controle em um formulário.

Tenho uma tabela Deptos (codDep, descr).

Uma tabela Problemas (codProbl, descr),

Uma tabela DeptoProblemas (codDP, codDep, codProbl) que lista os problemas relacionados a um depto.

No Formulário tenho um combobox Departamentos.

A seguir há outro combobox que deveria mostrar apenas os problemas relacionados ao depto selecionado pelo user (único), mas o resultado parece aleatório.

Em Origem da Linha no segundo comboBox está:

SELECT DeptoProblemas.codProbl, Problemas.Descr, DeptoProblemas.CodDep

FROM Problemas

INNER JOIN DeptoProblemas ON Problemas.codProbl=DeptoProblemas.codProbl

WHERE (((DeptoProblemas.CodDep)=Forms!Oportunidades!CodDep))

ORDER BY Problemas.Descr;

Tentei criar uma caixa de texto contendo o "CodDep" para não selecionar do combobox, mas não resolveu.

O conteúdo da caixa de texto estava correto, o que me faz pensar que chega correto para o parâmetro da cláusula WHERE.

Help.

Não consigo ver onde está o erro.

Obrigado

All-It

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Obrigado pela resposta. Do seu site baixei o exemplo das namoradas por cliente, que cria uma procedure after.

Tentei criar algo similar mas de novo não vêm os registros corretos, o que me faz pensar que não estou me referindo corretamente ao campo selecionado no combo.

Alguém tentou trazer os registros usando o campo do formulário no WHERE?

Como está acima, vêm todos os registros e não apenas os do Depto selecionado.

Alguma idéia?

Obrigado.

Boa tarde amigo,

No meu site, na área de dicas, tem alguns exemplos de combo.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu não consigo enxergar o erro.

Agora está assim:

- ao inserir um registro mostra as opções corretas;

- ao navegar pelos registros, o primeiro aparece bem, os demais aparecem em branco, mas ao clicar vêm as opções e está posicionado no que é o correto (depois de fazer um Requery no GetFocus).

Como fazer para que apareça o texto ao navegar?

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Tente explicar melhor ou tente passar uma visão geral melhor do seu banco, o ideal era você posta-lo para analise.

Ah sim por evite fazer QUOTEs desnecessários de respostas... utilize resposta rápida no final da página, ok!

Link para o comentário
Compartilhar em outros sites

  • 0

Tenho uma tabela Dep (codDep, descr).

Uma tabela DepProbl (codDepProbl, codDep, descrProbl) que lista os problemas relacionados a um depto.

No formulário Chamados, associado à tabela Chamados (codCham, codDep, codDepProbl, data, ocorrencia, acao, responsavel) tenho:

1) um combobox cbDep que selecta os Deptos com Linha de Origem:

SELECT Dep.CodDep, Dep.Descr FROM Dep ORDER BY Dep.Descr;

Fonte de Controle: codDep

Num Colunas: 2

Col Acoplada: 1

no evento AposAtualizar e GetFocus há um Requery para cbProbl

2) um combobox cbProbl que em Linha de Origem chama esta Consulta:

SELECT DepProbl.codDep, DepProbl.DescrProbl, DepProbl.codDepProbl

FROM Deptos INNER JOIN DeptoProblemas ON Deptos.CodDep = DepProbl.CodDep

WHERE (((DepProbl.CodDep)=[forms]![Chamados]![cbDepto]))

ORDER BY DepProbl.DescrProbl;

Fonte de Controle: codDepProbl

Num Colunas 3

Col Acoplada 3

3) demais campos

Ao inserir dados está ok: no combo de Problemas aparecem apenas aqueles associados ao Depto selecionado;

Ao consultar, erro:

- o primeiro registro traz o combo Problema preenchido e também os demais registros que tenham o mesmo Depto;

- os demais registros, associados a outros Deptos, o combo aparece em branco, mas ao clicar sobre ele, vem a lista correta e com o Problema correto em destaque por causa do GetFocus, mas não aparece enquanto se navega entre registros.

Não consigo encontrar o erro.

Link com o teste da base:

http://www.presenteando.com.br/Teste.mdb

Obrigado.

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

  • 0

Na propriedade de eventos "No atual" do formulário faça um código assim:

If Not IsNull(Me.cbDeptos) Then

Me.cbDeptoQueixas.Requery

End If

Como seus campos não são acoplados é necessário estar sempre atualizando quando vai navegando entre os registros, mais cuidado pois isso pode deixar seu sistema lento, pode ser que vocÊ não sinta isso no inicio mais quando ele estiver com muitos registros para atualizar isso pode vir a ser um incoveniente... espero que isso resolva seu problema aguardo retorno!

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado! Resolvido.

Não entendi o comentário sobre "campos não acoplados": a tabela Chamados está relacionada com o Id do Depto e com o Id do Problema; deveria acoplar com a descrição?! O que sugere para otimizar? Sugere algum link ou exemplo onde possa estudar melhor esta situação?

Obrigado novamente.

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...