locked
Link entre form e subform RRS feed

  • 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:06
    Moderador

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:32
    Moderador
  • 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 = Nothing

    End 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:06
    Moderador