GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Sincronizar duas caixas de combinação tendo varias tabelas
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
5-star Rating (1 Vote) Vote!  Login/Cadastrar 
Programador Júnior

postado
Olá a todos. Pesquisei meu problema aqui no fórum mas não achei uma solução ideal. Tenho um formulário com duas caixas de combinação. Ao selecionar um valor na primeira (1,2 ou 3) a segunda deve me mostrar o campo "código" da tabela correspondente (A, B, ou C). Tentei usar a função ROWSource, mas estou errando em algum ponto. Agradeço a ajuda !
 
Postagens: 119 | Localização: Rio Claro | Registrado: 04 May 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Analista Sênior

Figura de  Renato Santos
postado Hide Post

Pablo,

Por favor, poste sua linha com o ROWSource para que possamos analisar.
Se na "Origem da Linha" da segunda caixa de combinação já possuir uma consulta referenciando a primeira caixa, basta dar um Requery na segunda após atualizar a primeira.
Desculpe a simplicidade na resposta. O intuito é ajudar.
Abraços.


   Renato Santos
rebornbr@msn.com
        XP/2K
 
Postagens: 1592 | Localização: Belo Horizonte | Registrado: 22 November 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Gerente

Figura de  OsmarJr
postado Hide Post
Dê uma olhada aqui.


========================================================
A culpa é minha e eu ponho ela em quem eu quiser! (Homer J Simpson)
 
Postagens: 3174 | Localização: Curitiba - PR | Registrado: 08 March 2001Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Júnior

postado Hide Post
Caro Osmar e Renato.
Tentei usar o exemplo do Osmar adaptado ao meu problema. Mas não está dando certo. Usei a seguinte sintaxe:

Private Sub combGrupo_AfterUpdate()

Dim sOrigem As String

sOrigem = "SELECT [celular].[cod] FROM celular WHERE [celular].[Grupo] = 1"
Me.CombProd.RowSource = sOrigem
Me.CombProd.Requery
End Sub

Neste caso CombGrupo teria o valor de 1 então a variável sOrigem iria buscar na tabela celular os códigos referentes ao grupo 1 e passar para CombProd. Acontece que a combo fica em branco. Se tiver 10 registros na tabela celular, aparece na combo 10 linhas em branco.
Teria que aplicar este mesmo conceito para os grupos 2 e 3 mas eles teriam que pegar os códigos na tabela chips e acessorios respectivamente. Neste caso iria usar um If.
O que está dando errado ?
Obrigado pela ajuda.
 
Postagens: 119 | Localização: Rio Claro | Registrado: 04 May 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Júnior

postado Hide Post
Só para completar a segunda combo (CombProd) não sei como ficaria a origem da linha já que pode ter 3 origens diferentes pois preciso usar 3 tabelas. O problema pode estar ai ?
Devo tentar outra solução ?
Obrigado!
 
Postagens: 119 | Localização: Rio Claro | Registrado: 04 May 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Analista Sênior

Figura de  Renato Santos
postado Hide Post

Pablo Rodrigo,

Esperimente assim:
Private Sub combGrupo_AfterUpdate()

Dim sOrigem As String

    sOrigem = "SELECT cod" & " FROM celular" & " WHERE Grupo = " & Me.combGrupo
    Me.CombProd.RowSource = sOrigem
    Me.CombProd.Requery

End Sub

Caso seu campo Grupo esteja em formato texto, use:
Private Sub combGrupo_AfterUpdate()

     Dim sOrigem As String

     sOrigem = "SELECT cod" & " FROM celular" & " WHERE Grupo Like " & Me.combGrupo
     Me.CombProd.RowSource = sOrigem
     Me.CombProd.Requery

End Sub

Testei aqui e funcionou.
Continuo ao seu dispor. Feliz


   Renato Santos
rebornbr@msn.com
        XP/2K
 
Postagens: 1592 | Localização: Belo Horizonte | Registrado: 22 November 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Analista Sênior

Figura de  Renato Santos
postado Hide Post
quote:
Postado originalmente por Pablo Rodrigo:
Só para completar a segunda combo (CombProd) não sei como ficaria a origem da linha já que pode ter 3 origens diferentes pois preciso usar 3 tabelas. O problema pode estar ai ?
Devo tentar outra solução ?
Obrigado!

Pablo,

Não entendi... Confuso
A origem da linha não é o campo cod da tabela celular?
Por acaso você definiu outra origem de linha para a caixa de combinação CombProd ou definiu a largura da primeira coluna como 0 (zero)?


   Renato Santos
rebornbr@msn.com
        XP/2K
 
Postagens: 1592 | Localização: Belo Horizonte | Registrado: 22 November 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Júnior

postado Hide Post
Oi Renato, obrigado por responder. A primeira combo, CombGrupo tem apenas os valores 1,2 e 3. A combProd, como disse náo sei como seria a origem da linha pois ela pode vir de 3 tabelas (celular, caso o grupo seja 1, chip caso o grupo seja 2 e acessório caso o grupo seja 3). Está aí o problema, pois as 3 tabelas destes produtos tem campos diferentes o que inviabiliza juntar tudo em uma única tabela. Então quando o usuário escolher o grupo 1 quero que a combprod use os campos Cod e descrição da tabela Celular, quando escolher 2, use o campo cod e descrição da tabela chip.
Se isto não for possível fazer vou tentar outra solução. Vou testar o seu exemplo hoje e depois te retorno. Obrigado.
Pablo.
 
Postagens: 119 | Localização: Rio Claro | Registrado: 04 May 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Analista Sênior

Figura de  Renato Santos
postado Hide Post

Confuso E quando ele escolher 3?
Dê a informação completa ou use If.


   Renato Santos
rebornbr@msn.com
        XP/2K
 
Postagens: 1592 | Localização: Belo Horizonte | Registrado: 22 November 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Júnior

postado Hide Post
Olá REnato,
em resposta a sua pergunta, quando o usuário colocar 3 a combo deverá apresentar o codigo e a descrição da tabela acessórios. Neste caso iria sim usar o IF, mas acontece que não está dando certo mesmo sem ele. Tentei usar o seu exemplo, mas deu problema. GRato mais uma vez.
PAblo.
 
Postagens: 119 | Localização: Rio Claro | Registrado: 04 May 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Analista Sênior

Figura de  Renato Santos
postado Hide Post
Qual problema?


   Renato Santos
rebornbr@msn.com
        XP/2K
 
Postagens: 1592 | Localização: Belo Horizonte | Registrado: 22 November 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Programador Júnior

postado Hide Post
É que a combo fica vazia ao escolher o valor 1, 2 ou 3 na primeira combo.
 
Postagens: 119 | Localização: Rio Claro | Registrado: 04 May 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
Analista Sênior

Figura de  Renato Santos
postado Hide Post

Pablo,

Insira o seguinte VBA para o evento "Após atualizar" da caixa de combinação combGrupo:
Private Sub combGrupo_AfterUpdate()

     Dim sOrigem As String
     Dim tbl As String
    
     Select Case Me.combGrupo
          Case Is = 1
               tbl = "celular"
          Case Is = 2
               tbl = "chip"
          Case Is = 3
               tbl = "acessórios"
     End Select

     sOrigem = "SELECT cod,descrição FROM " & tbl
     Me.CombProd.RowSource = sOrigem
     Me.CombProd.Requery

End Sub

Não se esqueça de especificar o "Número de colunas" da CombProd como 2 e definir a largura para as mesmas.
Testei aqui e funcionou perfeitamente.
Caso dê problemas com você, copie o seu procedimento do editor de VBA e poste aqui.
Boa sorte! Feliz


   Renato Santos
rebornbr@msn.com
        XP/2K
 
Postagens: 1592 | Localização: Belo Horizonte | Registrado: 22 November 2002Reply With QuoteEditar ou Apagar MensagemReport This Post
 Tópico Anterior | Próximo Tópico Powered by Eve For Enterprise  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Sincronizar duas caixas de combinação tendo varias tabelas

©