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

    [Resolvido]Código grava só um registro na tabela.

    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    [Resolvido]Código grava só um registro na tabela. Empty Código grava só um registro na tabela.

    Mensagem  Lupércio 27/6/2013, 21:08

    Ola pessoal boa tarde, humildemente necessito de ajuda dos senhores!

    Tenho um formulário continuo "Frm_01", onde são filtrados registros de uma consulta "Cons_Mestre"
    Que através de um botão quero inserir esses registros em uma tabela "Tb_01"
    Acontece que só está enviando um registro para a tabela!

    Ha tempo abri um tópico aqui no fórum com o mesmo intuito,
    para adicionar registros do formulário continuo a uma tabela.

    Foi usado esse código para resolver o problema:


    Private Sub Comando22_Click()

    Dim db1 As Database, db2 As Database, rs1 As DAO.Recordset, rs2 As DAO.Recordset, rs3 As DAO.Recordset
    Dim frm As Form, regs As Recordset, I As Integer
    Set frm = Me
    Set regs = frm.RecordsetClone


    Set db1 = CurrentDb

    Set rs1 = db1.OpenRecordset("TabArmazem", dbOpenTable)
    regs.MoveFirst
    With rs1
    For I = 1 To regs.RecordCount ' faz o loop nos registros do formulário para gravar cada um deles na tabela TabArmazem
    .AddNew

    ![Nome] = Me.Nome
    ![ValorCompra] = Me.ValorCompra
    ![DataCompra] = Me.DataCompra
    ![Compra] = Me.Compra
    ![DataVencimento] = Me.DataVencimento
    ![CpValor] = Me.CpValor

    .Update
    Next I
    End With




    End Sub

    Pergunto aos Mestres, Onde estou a errar?
    Pois ele grava somente um registro.


    Aguardo ajuda dos senhores, um abraço.


    Última edição por Lupércio em 27/6/2013, 21:17, editado 1 vez(es)
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  criquio 27/6/2013, 21:12

    Alem do Recordset que está usando para abrir a tabela, use RecordsetClone para percorrer os registros do formulário igual o Recordset faz para a tabela. Se pesquisar por esse termo, encontrarás muita coisa no fórum.


    .................................................................................
    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.

    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    [Resolvido]Código grava só um registro na tabela. Empty Código grava só um registro na tabela.

    Mensagem  Lupércio 27/6/2013, 21:15

    Criquio boa tarde, desculpe eu tinha postado o código errado!

    Não sei onde estou a errar:

    Private Sub Comando22_Click()

    Dim db1 As Database, db2 As Database, rs1 As DAO.Recordset, rs2 As DAO.Recordset, rs3 As DAO.Recordset
    Dim frm As Form, regs As Recordset, I As Integer
    Set frm = Me
    Set regs = frm.RecordsetClone


    Set db1 = CurrentDb

    Set rs1 = db1.OpenRecordset("Tb_01", dbOpenTable)
    regs.MoveFirst
    With rs1
    For I = 1 To regs.RecordCount ' faz o loop nos registros do formulário para gravar cada um deles na tabela Tb_01
    .AddNew

    ![Nome] = Me.Nome
    ![ValorCompra] = Me.ValorCompra
    ![DataCompra] = Me.DataCompra
    ![Compra] = Me.Compra
    ![DataVencimento] = Me.DataVencimento
    ![CpValor] = Me.CpValor

    .Update
    Next I
    End With




    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

    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  criquio 27/6/2013, 21:21

    Tente trocar as linhas abaixo:

    Set frm = Me
    Set regs = frm.RecordsetClone

    por:

    Set regs = Me.Form.RecordsetClone


    .................................................................................
    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.

    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    [Resolvido]Código grava só um registro na tabela. Empty Código grava só um registro na tabela.

    Mensagem  Lupércio 27/6/2013, 21:35

    Criquio ainda não deu!

    Ex no meu form está assim:

    Idcodigo - Municipio - Exame
     11          col        -  AES
     12          col           hemograma.


    No botão está transferindo para a tabela assim:

    Idcodigo  - Municipio - Exame
    11             col           AES
    12             col           AES

    Ao invés de transferir para a tabela,,,,, AES e Hemograma
    transferi os dois registros mas ambos ....AES.
    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  Lupércio 27/6/2013, 21:39

    Veja o código com a alteração que você me pediu!


    Private Sub Comando22_Click()
    Dim db1 As Database, db2 As Database, rs1 As DAO.Recordset, rs2 As DAO.Recordset, rs3 As DAO.Recordset
    Dim frm As Form, regs As Recordset, I As Integer



    Set regs = Me.Form.RecordsetClone


    Set db1 = CurrentDb

    Set rs1 = db1.OpenRecordset("Tb_01", dbOpenTable)
    regs.MoveFirst
    With rs1
    For I = 1 To regs.RecordCount ' faz o loop nos registros do formulário para gravar cada um deles na tb_01
    .AddNew
    ![IDcodigo] = Me.IDcodigo
    ![Municipio] = Me.Municipio
    ![Exame] = Me.Exame


    .Update
    Next I
    End With
    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

    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  criquio 27/6/2013, 22:02

    Você precisa trocar o Me.NomeDoCampo por regs!NomeDoCampo, tudo igual faz com o Recordset para tabela. E use o Do While:
    Código:
    Do While Not regs.EOF
    ![IDcodigo] = regs!IDcodigo
    ...
    regs.MoveNext
    Loop


    .................................................................................
    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.

    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  Lupércio 27/6/2013, 22:17

    troquei veja! agora retorna uma linha em branco.


    código:

    Dim db1 As Database, db2 As Database, rs1 As DAO.Recordset, rs2 As DAO.Recordset, rs3 As DAO.Recordset
    Dim frm As Form, regs As Recordset, I As Integer



    Set regs = Me.Form.RecordsetClone


    Set db1 = CurrentDb

    Set rs1 = db1.OpenRecordset("Tb_01", dbOpenTable)
    regs.MoveFirst
    With rs1
    For I = 1 To regs.RecordCount
    .AddNew

    Do While Not regs.EOF
    ![IDcodigo] = regs!IDcodigo
    ![Municipio] = regs!Municipio
    ![Exame] = regs!Exame

    regs.MoveNext
    Loop

    .Update
    Next I
    End With
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  criquio 27/6/2013, 22:20

    O Do While é para ficar no lugar do For. Nesse caso não precisa do For. E o AddNew e o Update tem que ficar dentro do Do While tambem. Um antes de começar a gravar e o outro depois de gravar. E pode retirar as variáveis não usadas, já que precisará de apenas dois rs, sendo um para a tabela e outro para o Clone no formulá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.

    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  Lupércio 27/6/2013, 22:32

    Que aula hem mestre, Very Happy, funcionou normal e agradeço pelo aprendizado!
    Resolvido por aqui!

    Criquio sem abusar da tua paciência, se os campos não forem iguais?
    Digo os campos da tabela e do form, não precisa usar o Do While?




    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  Lupércio 27/6/2013, 22:45

    Criquio,

    Alterei os nomes dos campos da tabela, para testes!
    Só funcionou com essas alterações, feita trocando para Do While.
    Esse código ficou perfeito, funciona de todas as maneiras, agradeço pela ajuda amigo.

    Um abraço fica com Deus.

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  criquio 27/6/2013, 23:43

    A questão do Do While é percorrer todos os registros do subformulário para jogá-lo na tabela. O EOF significa End Of File, ou seja Fim do arquivo, que no nosso caso, é fim da lista de registros. Se eu digo Do While Not rs.EOF estou pedindo para que vá pegando linha a linha e vá fazendo alguma coisa com ela. O rs.MoveNext manda se mover para a próxima linha e o Loop manda iniciar o processo novamente com essa linha. E assim vai indo até chegar ao final.


    .................................................................................
    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.

    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  Lupércio 28/6/2013, 16:34

    Obrigado pela aula, grande criquio.Shocked 

    Conteúdo patrocinado


    [Resolvido]Código grava só um registro na tabela. Empty Re: [Resolvido]Código grava só um registro na tabela.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 01:43