Assuma que você tem duas tabelas:
tblLoja
IdLoja (PK)
NomeLoja
tblGerente
IDGerente (PK)
IDLoja (FK - tblLoja)
NomeGerente
Você tem um formulário com duas caixas de combinação:
cboLoja
Origem do registro: SELECT [tblLoja].[ IDLoja], [tblLoja].[NomeLoja] FROM tblLoja;
cboGerente
Origem do registro: SELECT [tblGerente].[IDGerente], [tblGerente].[ IDLoja], [tblGerente].[NomeGerente]
FROM tblGerente;
Você deseja mostrar apenas os gerentes da loja selecionada em cboLoja.
Para isso será necessário modificar a Origem do registro da cboGerente no evento Após atualizar da cboLoja:
Private Sub cboLoja_AfterUpdate()
Dim sOrigemGerente As String
sOrigemGerente = "SELECT [tblGerente].[IDGerente], “ & _
“[tblGerente].[ IDLoja], “ & _
“[tblGerente].[NomeGerente] " & _
"FROM tblGerente " & _
"WHERE [IDLoja] = " & Me.cboLoja.Value
Me.cboGerente.RowSource = sOrigemGerente
Me.cboGerente.Requery
End Sub
Você pode ter este conceito de ter o valor de um controle afetando o valor de outro tendo em mente que o evento Após atualizar do primeiro controle é onde deve ser executada a ação que afeta o segundo controle.
Private Sub cboGerente_AfterUpdate()
Dim sOrigemFuncionario As String
sOrigemFuncionario = "SELECT IdFuncionario, NomeFuncionario From tblFuncionario " & _
"WHERE GerenteID = " & Me.cboGerente
cboFuncionario.RowSource = sOrigemFuncionario
cboFuncionario.Requery
End Sub
Private Sub cboLoja_AfterUpdate()
Dim sOrigemGerente As String
sOrigemGerente = "SELECT GerenteID, NomeGerente FROM tblGerente " & _
"WHERE IDLoja = " & Me.cboLoja
cboGerente.RowSource = sOrigemGerente
cboGerente.Requery
cboFuncionario.RowSource = vbNullString
cboFuncionario.Requery
End Sub