MaximoAccess

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

Obrigado

Administração do MaximoAccess

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


    [Resolvido]Salvar Registros selecionados no formulário continuo em outra tabela.

    avatar
    gtpsp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 01/11/2013

    [Resolvido]Salvar Registros selecionados no formulário continuo em outra tabela. Empty [Resolvido]Salvar Registros selecionados no formulário continuo em outra tabela.

    Mensagem  gtpsp em 16/1/2019, 18:53

    Olá senhores,

    Encontrei o código abaixo aqui no forum, porem não estou conseguindo fazer com que funcione no meu projeto, ele não esta percorrendo todos os registros do formulário, fiz simulação sem a condição if (registro selecionado) e o código gerou 4 registros (numero total de registros do formulário) na tabela, porem os registros gerados são referente ao primeiro registro do formulário, quando deixo a condição if ativada se o campo seleciona do primeiro esta clicado ele cria somente esse registro na tabela, mesmo tendo outros selecionados.

    Imagem do Formulário com os registros
    Imagem do Formulário




    Código:
    Dim rs As DAO.Recordset
    Dim tbl As DAO.Recordset
    Dim strSQL As String

    strSQL = "SELECT * FROM cp02cotacaoitens"
    'Abre a tabela que receberá os dados
    Set tbl = CurrentDb.OpenRecordset(strSQL)
    'carrega os dados do sub formulário
    Set rs = Forms!cotacaoitensgerardojob.RecordsetClone

    'Percorre os registros do sub forumlário um a um
    Do While Not rs.EOF
       If Me.ve08_sel <> 0 Then
          'Copia os dados do sub formulário para a tabela
           tbl.AddNew
            tbl!cp02_idorc = Me.cp01_id
            tbl!cp02_idcredor1 = Me.cp01_idcredor1
            tbl!cp02_idcredor2 = Me.cp01_idcredor2
            tbl!cp02_idcredor3 = Me.cp01_idcredor3
            tbl!cp02_idcredor3 = Me.cp01_idcredor3
            tbl!cp02_nitemjob = Me.ve08_nitem
            tbl!cp02_idprod = Me.ve08_idprod
            tbl!cp02_qtde = Me.ve08_qtde
            tbl!cp02_ultpreco = Nz(DLookup("pr06_ultpreco", "pr06produtos", "pr06_id = " & Me.ve08_idprod))
            tbl!cp02_dtultpreco = Nz(DLookup("pr06_dataultimopreco", "pr06produtos", "pr06_id = " & Me.ve08_idprod))
            tbl!cp02_nitem = Nz(DMax("cp02_nitem", "cp02cotacaoitens", "cp02_idorc = " & Me.cp01_id)) + 1
            tbl.Update
            Me.ve08_sel.Value = 0
       End If
        'vai para o proximo registro do sub formulário
        rs.MoveNext
    Loop

    tbl.Close
    rs.Close
    Set tbl = Nothing
    Set rs = Nothing

    MsgBox "Registro(s) salvo(s) com SUCESSO!", , "Gerar Cotação"



    Obrigado pela Ajuda.


    Última edição por gtpsp em 17/1/2019, 01:27, editado 1 vez(es)
    avatar
    gtpsp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 01/11/2013

    [Resolvido]Salvar Registros selecionados no formulário continuo em outra tabela. Empty Re: [Resolvido]Salvar Registros selecionados no formulário continuo em outra tabela.

    Mensagem  gtpsp em 17/1/2019, 01:24

    Problema resolvido, além do código tem o erro de chamada me ao invés de rs, o formulário tinha campos acoplados e campos desacoplados que estavam dando erro na chamada, o codigo final ficou conforme abaixo.

    Código:
    Dim rs As DAO.Recordset
    Dim tbl As DAO.Recordset
    Dim strSQL As String

    Forms!cotacaoitensgerardojob.Requery

    strSQL = "SELECT * FROM cp02cotacaoitens"
    'Abre a tabela que receberá os dados
    Set tbl = CurrentDb.OpenRecordset(strSQL)
    'carrega os dados do sub formulário
    Set rs = Forms!cotacaoitensgerardojob.RecordsetClone

    'Percorre os registros do sub forumlário um a um
    Do While Not rs.EOF
      If rs("ve08_sel") <> 0 Then
          'Copia os dados do sub formulário para a tabela
          tbl.AddNew
            tbl!cp02_idorc = DLookup("cp01_id", "cp01cotacao", "cp01_id = " & Me.cp01_id)
            tbl!cp02_idcredor1 = DLookup("cp01_idcredor1", "cp01cotacao", "cp01_id = " & Me.cp01_id)
            tbl!cp02_idcredor2 = DLookup("cp01_idcredor2", "cp01cotacao", "cp01_id = " & Me.cp01_id)
            tbl!cp02_idcredor3 = DLookup("cp01_idcredor3", "cp01cotacao", "cp01_id = " & Me.cp01_id)
            tbl!cp02_nitemjob = rs!ve08_nitem
            tbl!cp02_idprod = rs!ve08_idprod
            tbl!cp02_qtde = rs!ve08_qtde
            tbl!cp02_ultpreco = Nz(DLookup("pr06_ultpreco", "pr06produtos", "pr06_id = " & Me.ve08_idprod))
            tbl!cp02_dtultpreco = Nz(DLookup("pr06_dataultimopreco", "pr06produtos", "pr06_id = " & Me.ve08_idprod))
            tbl!cp02_nitem = Nz(DMax("cp02_nitem", "cp02cotacaoitens", "cp02_idorc = " & Me.cp01_id)) + 1
            tbl.Update
      End If
        'vai para o proximo registro do sub formulário
        rs.MoveNext
    Loop

    tbl.Close
    rs.Close
    Set tbl = Nothing
    Set rs = Nothing

    Grato

      Data/hora atual: 16/12/2019, 08:24