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

    Mover Registro

    Compartilhe

    paulovtostes
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 18/12/2012

    Mover Registro

    Mensagem  paulovtostes em Qua 02 Jan 2013, 18:46

    Estou tendo o seguinte problema:

    Tenho um banco de dados no qual cadastro alguns processos. Quando os mesmos são arquivados, gostaria de mover os dados (através do formulário) para outra tabela de arquivados.

    Criei um botão de comando no qual coloquei o seguinte código:

    Código:

    Private Sub Arquivar_Processo_Click()
    On Error GoTo Err_Arquivar_Processo_Click

    NdoProcesso = Nz([NdoProcesso])
    NomeDoContato = Nz([NomeDoContato])

        Dim msg
    msg = MsgBox("Arquivar processo " & NdoProcesso & " de " & NomeDoContato & "?", vbYesNo, "Confirmação")
    If msg = vbNo Then
    'do nothing
    Else
        DoCmd.RunCommand acCmdSelectRecord
        DoCmd.RunCommand acCmdCopy
        DoCmd.OpenTable "Arquivados"
        DoCmd.RunCommand acCmdRecordsGoToNew
        DoCmd.RunCommand acCmdSelectRecord
        DoCmd.RunCommand acCmdPaste
        DoCmd.Close acTable, "Arquivados"
        DoCmd.SetWarnings False
        DoCmd.RunCommand acCmdDeleteRecord
        DoCmd.SetWarnings True
        MsgBox " Processo Arquivado com sucesso! ", vbOKOnly, "Aviso"
    End If
    Exit_Arquivar_Processo_Click:
        Exit Sub

    Err_Arquivar_Processo_Click:
        MsgBox Err.Description
        Resume Exit_Arquivar_Processo_Click
       
    End Sub

    Porém o bando de dados retorna um erro, dizendo que os registros não foram colados e que fora criada um tabela "erros ao colar".

    O que pude perceber em uns testes, é que a colagem não obedece à ordem (que está correta no Design) , ou mesmo o Nome do Campo (que também são idênticos). Um campo é colado em outro quando não retorna tal mensagem. (o erro se dá exclusivamente por conta da colagem fora de ordem, tendo em vista que um campo tem formato diferente de outro)

    Gostaria de uma ajuda.

    Obrigado.
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3616
    Registrado : 20/04/2011

    Re: Mover Registro

    Mensagem  Silvio em Qua 02 Jan 2013, 19:12

    Boa tarde Paulo,

    Eu uso esse código para exportar dados de uma tabela para outra.

    Dim db1 As Database, rs1 As DAO.Recordset,
    If MsgBox("Confirma a Exportação desse Registro ?", vbYesNo + vbQuestion, "AVISO") = vbYes Then

    Set db1 = CurrentDb
    Set rs1 = db1.OpenRecordset("arquivados", dbOpenTable)

    With rs1
    ' os campos abaixo do formulário tem que ser iguais aos que estão na tabela para realizar a exportação
    .AddNew
    ' campos que estão na tabela arquivados = campos do fomulario
    ![IdEvento1] = Me.IdEvento1
    ...
    ...
    ...
    ...
    .Update
    End With
    DoCmd.RunCommand acCmdRefresh
    DoCmd.GoToRecord , , acNewRec

    MsgBox "Arquivamento confirmado.... !", vbOKOnly + vbInformation, "AVISO"
    End If
    End Sub


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    DiogoM
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 08/08/2013

    Deletar Registro

    Mensagem  DiogoM em Sex 13 Set 2013, 23:15

    Boa Noite.

    Gostaria de saber como faço para excluir o registro ? Utilizei esse cod para fazer uma copia e agr qro deletar o reg original, alguem pode me ajudar pf ? Obrigado
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3616
    Registrado : 20/04/2011

    Re: Mover Registro

    Mensagem  Silvio em Sab 14 Set 2013, 02:18

    Seja bem vindo ao fórum Diogo.

    O correto é você abrir um tópico referente a tua duvida, pois esse tópico se refere a um outro assunto.   Nova duvida, novo tópico.

    Mas vou te responder, para não lhe deixar na mão;

    Use o seguinte comando.


    On Error GoTo Err_Delete
           
       Dim numRecord As Integer 'Declaração da variável
       numRecord = InputBox("Informe o Id do Cliente....:", " Aviso...")
       
       'Confirmação de operação de delete
       If MsgBox("sua mensagem de aviso aqui & numRecord & "?", vbQuestion + vbYesNo, " Aviso...") = vbYes Then
           
           Dim SQL As String
           DoCmd.SetWarnings False 'Aviso de execução
           SQL = "DELETE * FROM suatabelaaqui WHERE suachaveprimariaaqui= " & numRecord 'ALTERE O NOME DA TABELA E NOME DO CAMPO
                                              'tabela                     nome do campo
           DoCmd.RunSQL SQL 'Executa consulta
                                       
           MsgBox "Exclusão realizada com sucesso!", vbInformation, "Aviso..." 'Confirmação do processo
         DoCmd.GoToRecord , , acNewRec
         
       Else
       MsgBox " Ação cancelada pelo usuário", vbInformation, " Aviso...l"
       
           Exit Sub
                                 
       End If
       DoCmd.RunCommand acCmdRefresh
       DoCmd.GoToRecord , , acNewRec
       
       
    Exit_Delete:
    Exit Sub

    Err_Delete:
       MsgBox "Erro número: " & Err.Number & vbLf & vbLf & Err.Description, vbCritical, "Avlso..."

    Resume Exit_Delete
    End Sub


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    DiogoM
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 08/08/2013

    Re: Mover Registro

    Mensagem  DiogoM em Seg 16 Set 2013, 22:31

    Boa Noite.
    Silvio eu n abri um novo topico, pois queria uma resposta sobre o cod q foi feito por vc, e n sabia como mencionar vc no novo topico.

    Em relação ao codigo q vc me passou para deletar um registro.
    Estou utilizando um formulario q mostra todas informações sobre o funcionario selecionado que esta dentro da tabela funcionarios ativos, e nesse formulario eu criei um botão q quando eu clicasse nele o registro do funcionario atual (que esta sendo exibido no form) seja movido para o form de funcionarios arquivados (seria mover registros de uma tabela para outra) o primeiro codigo q vc passou para o nosso colega seria somente para copiar utilizei ele e deu certo, mas esse agr q vc me passou n estou conseguindo excluir o registro, tem como inserir apenas uma linha para deletar o registro no primeiro codigo citado (o que faz a copia) ? ja tentei usar o comando insert into mas venho apanhando para realizar esse processo, pois não tenho quase nenhum conhecimento sobre desenvolvimento em VBA.
    Qualuquer coisa posso criar um novo topico e te mando o link dps para tentar solucionar o problema.
    Obrigado
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3616
    Registrado : 20/04/2011

    Re: Mover Registro

    Mensagem  Silvio em Ter 17 Set 2013, 11:31

    Bom dia Diogo.

    O comando para excluir faz exatamente isso.. Coloque esse comando em um botão, e após a cópia o usuário poderá deletar esse registro. Ao clicar no botão, vai ser pedido o número da chave primária:

    numRecord = InputBox("Informe o Id do funcionário....:", " Aviso...") --> aqui ele pede a chave primária.

    Nas linhas abaixo, realiza a exclusão do funcionário, baseado na chave primária.
    Dim SQL As String
    DoCmd.SetWarnings False -->Aviso de execução
    SQL = "DELETE * FROM suatabelaaqui WHERE suachaveprimariaaqui= " & numRecord -->ALTERE O NOME DA TABELA E NOME DO CAMPO
    'tabela nome do campo
    DoCmd.RunSQL SQL -->Executa consulta

    MsgBox "Exclusão realizada com sucesso!", vbInformation, "Aviso..." -->Confirmação do processo executado.
    DoCmd.GoToRecord , , acNewRec --> aqui vai para um novo registro. Essa linha pode ser excluída ou comentada com o apóstrofo ( ' ), sem os parenteses é claro. Isso vale para o outro código também


    Ou podemos fazer uma " salada de frutas ", como pode ser visto abaixo....


    Dim db1 As Database, rs1 As DAO.Recordset,
    If MsgBox("Confirma a Exportação desse Registro ?", vbYesNo + vbQuestion, "AVISO") = vbYes Then

    Set db1 = CurrentDb
    Set rs1 = db1.OpenRecordset("arquivados", dbOpenTable)

    With rs1
    ' os campos abaixo do formulário tem que ser iguais aos que estão na tabela para realizar a exportação
    .AddNew
    ' campos que estão na tabela arquivados = campos do fomulario
    ![IdEvento1] = Me.IdEvento1
    ...
    ...
    ...
    ...
    .Update
    End With
    DoCmd.RunCommand acCmdRefresh
    DoCmd.GoToRecord , , acNewRec

    MsgBox "Arquivamento confirmado.... !", vbOKOnly + vbInformation, "AVISO"
    End If


    Dim numRecord As Integer 'Declaração da variável
    numRecord = InputBox("Informe o Id do Cliente....:", " Aviso...")

    'Confirmação de operação de delete
    If MsgBox("sua mensagem de aviso aqui & numRecord & "?", vbQuestion + vbYesNo, " Aviso...") = vbYes Then

    Dim SQL As String
    DoCmd.SetWarnings False 'Aviso de execução
    SQL = "DELETE * FROM suatabelaaqui WHERE suachaveprimariaaqui= " & numRecord 'ALTERE O NOME DA TABELA E NOME DO CAMPO
    'tabela nome do campo
    DoCmd.RunSQL SQL 'Executa consulta

    MsgBox "Exclusão realizada com sucesso!", vbInformation, "Aviso..." 'Confirmação do processo
    DoCmd.GoToRecord , , acNewRec

    Else
    MsgBox " Ação cancelada pelo usuário", vbInformation, " Aviso...l"

    Exit Sub

    End If
    DoCmd.RunCommand acCmdRefresh
    DoCmd.GoToRecord , , acNewRec


    Exit_Delete:
    Exit Sub

    Err_Delete:
    MsgBox "Erro número: " & Err.Number & vbLf & vbLf & Err.Description, vbCritical, "Avlso..."

    Resume Exit_Delete

    Bons estudos.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

    DiogoM
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 08/08/2013

    Mover registro

    Mensagem  DiogoM em Ter 24 Set 2013, 21:49

    Boa Tarde.
    Silvio obrigado pela sua ajuda e pela sua atenção, o cod funcionou perfeitamente fiz alguns ajustes nele e esta funcionando, ainda so fiz alguns testes com ele, mas logo ja vou estar implantando em meu sistema na empresa, desculpa pela demora estava sem tempo para entrar no forum e tbm fazer os testes com o cod.
    Por acaso com esse cod ele consegue mover registro tipo anexo ?
    Obrigado pela ajuda.

    Diogo Moura

    PetryX
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 22/03/2017

    Re: Mover Registro

    Mensagem  PetryX em Qui 27 Abr 2017, 04:15

    Olá,

    Minha duvida seria no caso... se foce um SubForms, como deveria ser o codigo pra arquivar?

      Data/hora atual: Seg 25 Set 2017, 10:40