MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    Inserir Registro via VBA ( em duas tabelas )

    dayvidpaixao
    dayvidpaixao
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 24/09/2012

    Inserir Registro via VBA ( em duas tabelas )  Empty Inserir Registro via VBA ( em duas tabelas )

    Mensagem  dayvidpaixao 30/10/2012, 10:59

    Bom dia Srs.

    Eu consegui inserir através do código abaixo, registros em apenas uma tabela. Porem preciso inserir registros relacionados a primeira tabela em uma segunda tabela.

    Por exemplo: Preciso no momento que eu estiver cadastrando novos funcionários, cadastrar também os animais dos funcionários, na "tab_animais".

    Por favor... Como eu continuo esse condigo para inserir os animais dos funcionários no meu sub-formulário?

    Código:

    Public Function Cadastra_Funcionario() As Integer

    Dim BancoDados As DAO.Database
    Dim RSfuncionarios As DAO.Recordset

        Set BancoDados = CurrentDb()
        Set RSfuncionarios = BancoDados.OpenRecordset("tab_funcionarios", dbOpenDynaset)

            RSfuncionarios.AddNew
           
                RSfuncionarios("matricula") = txt_matricula
                RSfuncionarios("nome") = txt_nome
                RSfuncionarios("id_tab_funcao_func") = cmb_funcao
                RSfuncionarios("id_tab_tipo_end") = cmb_tipo_end
                RSfuncionarios("id_tab_municipios") = cmb_municipio
                RSfuncionarios("id_tab_polo") = cmb_polo
                RSfuncionarios("sexo") = cmb_sexo
               
            RSfuncionarios.Update
            RSfuncionarios.MoveLast
           
    End Function

    Muito obrigado...
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  criquio 30/10/2012, 11:06

    Basta criar mais um objeto e instanciá-lo para a segunda tabela:

    Código:
    Dim BancoDados As DAO.Database
    Dim RSfuncionarios As DAO.Recordset
    Dim SegundaTabela As DAO.Recordset

        Set BancoDados = CurrentDb()
        Set RSfuncionarios = BancoDados.OpenRecordset("tab_funcionarios", dbOpenDynaset)
        Set SegundaTabela = BancoDados.OpenRecordset("NomeDaTabela", dbOpenDynaset)
    ...
    E não se esquecer de fechar esses objetos e excluí-los da memória. Isso é muito importante:

    Código:
    ...
        SeguntaTabela.Close
        Set SegundaTabela = Nothing

        RSfuncionarios.Close
        Set RSfuncionarios = Nothing

        BancoDados.Close
        Set BancoDados = Nothing

    End Function


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    dayvidpaixao
    dayvidpaixao
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 24/09/2012

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  dayvidpaixao 30/10/2012, 11:16

    Obrigado pela atenção criquio,

    Porém como eu faço para dizer dentro do código que os "n" animais pertencem ao "x" funcionario ?

    Estrutura da tab_animais

    id_animais Numeração Automática
    id_tab_funcionario Número
    animal Texto
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  criquio 30/10/2012, 11:20

    É só passar o nome do campo que tem a id normalmente.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    dayvidpaixao
    dayvidpaixao
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 24/09/2012

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  dayvidpaixao 30/10/2012, 11:23

    Ok, vou tentar fazer.. Pois é a primeira vez que irei fazer esse procedimento.

    Para fechar a conexao usei esse codigo abaixo. Esta certo?

    Código:

    Private Sub Finaliza_Cadastro()
       
    Dim RSfuncionarios As DAO.Recordset
       
        Set RSfuncionarios = BancoDados.OpenRecordset("tab_funcionarios")
       
    'Fecha os RECORDSETS
    Fecha:

    End Sub
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  criquio 30/10/2012, 11:40

    Feche os objetos na mesma função conforme passei acima. Observe que tem o End Function após o fechamento, o que significa que está na mesma função, pois veja as reticências (...), antes das linhas de fechamento.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    dayvidpaixao
    dayvidpaixao
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 24/09/2012

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  dayvidpaixao 30/10/2012, 13:23

    Olá criquio,

    Quando peço para Compilar, aparece a seguinte mensagem:

    "Erro de Compilação
    Variavel nao Definida "

    RS_Animais_Func("animal") = txt_nome_animal

    O nome do sub-formulario é for_sub_animal

    Voce pode me ajudar por favor...

    Código:

    Public Function Cadastra_Funcionario() As Integer

    Dim BancoDados As DAO.Database
    Dim RS_Funcionarios As DAO.Recordset
    Dim RS_Animais_Func As DAO.Recordset

        Set BancoDados = CurrentDb()
        Set RS_Funcionarios = BancoDados.OpenRecordset("tab_funcionarios", dbOpenDynaset)
        Set RS_Animais_Func = BancoDados.OpenRecordset("tab_animais", dbOpenDynaset)
       
       
            RS_Funcionarios.AddNew
            RS_Animais_Func.AddNew
           
                RS_Funcionarios("matricula") = txt_matricula
                RS_Funcionarios("nome") = txt_nome
                RS_Funcionarios("id_tab_funcao_func") = cmb_funcao
                RS_Funcionarios("id_tab_tipo_end") = cmb_tipo_end
                RS_Funcionarios("id_tab_municipios") = cmb_municipio
                RS_Funcionarios("id_tab_polo") = cmb_polo
                RS_Funcionarios("sexo") = cmb_sexo
               
                                         
                RS_Animais_Func("id_tab_funcionario") = RS_Funcionarios("id_funcionario")
                RS_Animais_Func("animal") = txt_nome_animal
                                 
        If MsgBox("Deseja finalizar o cadastro do Funcionário?", vbYesNo, "Confirmação de Cadastro") = vbYes Then
                   
            MsgBox "Funcionário " & RS_Funcionarios("matricula") & " - " & RS_Funcionarios("nome") & " cadastrado com sucesso!!!", vbInformation, "Cadastro realizado"
            RS_Funcionarios.Update
            RS_Funcionarios.MoveLast
               
            Else
               
                RS_Funcionarios.CancelUpdate
       
        End If
               
    RS_Animais_Func.Close
    Set RS_Animais_Func = Nothing

    RS_Funcionarios.Close
    Set RS_Funcionarios = Nothing

    BancoDados.Close
    Set BancoDados = Nothing

           
    End Function
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  criquio 30/10/2012, 16:58

    O código está no mesmo local dos campos ou um está no form principal e ou outro no subform? Eles precisam estar no mesmo elemento ou então precisa passar o caminho incluindo o nome do form e do subform. Por exemplo, se o botão está no form e o campo no subform:

    RS_Animais_Func("animal") = Forms!NomeForm!NomeSubForm.form!txt_nome_animal

    E para campos no mesmo formulário, sugiro colocar Me. antes do nome do controle, para o Access não fazer confusão com outros elementos de mesmo nome:

    RS_Animais_Func("animal") = Me.txt_nome_animal

    Tambem sugiro não utilizar espaços nos nomes de controles elementos. Ao invés de txt nome animal, seria mais prático txtNomeAnimal.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    dayvidpaixao
    dayvidpaixao
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 24/09/2012

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  dayvidpaixao 30/10/2012, 17:54

    Ficou perfeito Criquio, Muito obrigado

    Porem como eu faço para colocar mais de um animal, para o funcionário X, dentro desse subformulário continuo? Pois como os controles estão desacoplados ele não gera uma outra linha para eu inserir mais de uma animal
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  criquio 30/10/2012, 23:38

    Uma saída pode ser você vincular o subformulário em tempo de execução no evento "Ao abrir":

    Me.RecordSource = "Select * from NomeDaTabela"

    Precisará colocar os nomes dos campos da tabela como a origem dos campos do subformulário


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    dayvidpaixao
    dayvidpaixao
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 24/09/2012

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  dayvidpaixao 31/10/2012, 00:03

    Obrigado... E como eu faço para passar via codigo o valor da id_funcionario para os "n" campo id_tab_funcionarios?
    dayvidpaixao
    dayvidpaixao
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 24/09/2012

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  dayvidpaixao 31/10/2012, 00:40

    Tem algum moderador que por gentileza pode me ajudar por favor...?
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  criquio 31/10/2012, 16:03

    Talvez nem precise desse subform. No caso, você poderia deixar todos os campos no form principal e um botão para ir cadastrando os dados dos campos da segunda tabela.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    dayvidpaixao
    dayvidpaixao
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 32
    Registrado : 24/09/2012

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  dayvidpaixao 31/10/2012, 16:32

    Porque? Nao teria mesmo como fazer com o sub ?
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  criquio 31/10/2012, 21:49

    Você pode acrescentar o registro na tabela via VBA e atualizar o sub para exibir esse registro e então mandar o foco para a última linha:


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.


    Conteúdo patrocinado


    Inserir Registro via VBA ( em duas tabelas )  Empty Re: Inserir Registro via VBA ( em duas tabelas )

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 06:47