Usuário com melhor resposta
Link entre form e subform

Pergunta
-
Tenho uma tabela que contem dados de projetos (TblProjetos).
Quero criar um form com subform onde o usuário poderia selecionar o projeto em um Combobox e o subform retornaria as atividades e respectivas descrições desse projeto.
Acho que preciso de uma outra tabela onde serão cadastradas as atividades dos projetos (seria TblAtividadesProjeto), certo?
Não sei como criar o form com o subform de forma que eu tenha um combobox no form, e de forma que ao selecionar o projeto nesse combo, o subform seja atualizado, aparecendo em datasheet view para que o usuário possa cadastrar atividades em uma coluna e cadastrar suas descricoes em outra coluna.
Esse form deveria ser baseado na TblProjetos? O subform deveria ser baseado na TblAtividadesProjeto?
Preciso de ajuda detalhada pois não entendo muito de Access.
Obrigado,
Antônio Machado.
terça-feira, 10 de julho de 2007 20:59
Respostas
-
Faz sentido, mas é desnecessário carregar a tblProjetos duas vezes, como está fazendo (uma no form principal, outra na combo).
Você pode configurar Link master field/child field sem usar o assistente, digitando direto na propriedade:
Forms!FormPrincipal!TuaCombo
Desta forma não precisará colocar a tblProjetos no formulário principal, pode deixá-lo desacoplado.
domingo, 22 de julho de 2007 01:06Moderador
Todas as Respostas
-
Na verdade você não precisa de um form com subform (bastaria um form contínuo com uma combo de projetos no cabeçalho), mas pode usá-lo sem problema.
O form principal não precisa ter tabela na origem. A tabela de projetos deverá estar na origem de linha da combo. A tabela de atividades deverá estar na origem do subform.
Nas propriedades Link Master Field/Link Child Fields do subform, você coloca Forms!FormPrincipal!ComboProjetos e CodProjeto, respectivamente.
quinta-feira, 12 de julho de 2007 02:32Moderador -
Pelo que entendi, sempre vou precisar do evento AfterUpdate, se quiser mostrar as atividades de cada projeto, correto?
Só consegui resolver o problema quando fiz o seguinte:
1) recordsource do form igual a tblprojetos
2) o rowsource do combo igual a tblprojetos (colocando os column widths igual a zero para as colunas que eu nao queria mostrar no combo)
3) link child/master fields igual a Projeto_ID
4) recordsource do subform igual a tblAtividades Subform
5) acrescentei o seguinte codigo ao evento afterupdate (essa era a parte que eu nao conhecia):
Private Sub Projeto_AfterUpdate()
Dim Rst As DAO.Recordset
Set Rst = Me.RecordsetClone
Rst.FindFirst "[Projeto_ID] = " & Me!Projeto
Me.Bookmark = Rst.Bookmark
Rst.Close
Set Rst = NothingEnd Sub
Faz sentido?
Obrigado mais uma vez
segunda-feira, 16 de julho de 2007 01:52 -
Faz sentido, mas é desnecessário carregar a tblProjetos duas vezes, como está fazendo (uma no form principal, outra na combo).
Você pode configurar Link master field/child field sem usar o assistente, digitando direto na propriedade:
Forms!FormPrincipal!TuaCombo
Desta forma não precisará colocar a tblProjetos no formulário principal, pode deixá-lo desacoplado.
domingo, 22 de julho de 2007 01:06Moderador