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

    Copiar dados de uma tabela para outra tabela via VBA

    avatar
    welson3001
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 19/04/2017

    Copiar dados de uma tabela para outra tabela via VBA Empty Copiar dados de uma tabela para outra tabela via VBA

    Mensagem  welson3001 Sex 20 Mar 2020, 12:59 am

    O código abaixo funciona normalmente quando utilizo valores inteiros, ou seja, sem centavos nas casas decimais (ex.: 500,00), mas quando utilizo centavos (500,25) ele pede para depurar; sei que o erro está nesta linha nos campos de:
    ValorDevido
    ValorCurso
    ValorRestituir

    mas não sei como corrigir (usei um exemplo pronto da internet)
    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    Este código pega os dados e lança em outra tabela (não a que gerou o formulário); fiz isto pois estou usando uma numeração automática sequencial e foi a única maneira que consegui para não ficar pulando números toda vez que alguém
    iniciava o formulário e por algum motivo não terminava ou fechava o mesmo. Com este procedimento, só é gerado um número na tabela permanente, após clicar em SALVAR. Mas agora percebi este problema.

    -----------------Parte do código com erro ---------------------------------------------------------------------------------------------------------------

    CurrentDb.Execute "INSERT INTO tblSysDevCadCancelamento (CodAno, DataCancelamento, Atendente, CpfAluno, CpfFavorecido, NomeFavorecido, Curso, Turma, CodBanco, Agencia, DigitoAgencia, ContaCorrente, ContaDigito, FormaPgto, OBS, MotivoCancelamento, HorasFreqAluno, ValorDevido, ValorDevidoExtenso, CargaHorariaCurso, ValorCurso, ValorCursoExtenso, ValorRestituir, ValorRestituirExtenso) VALUES ('" & CodAno & "', '" & DataCancelamento.value & "', '" & Atendente & "', '" & CpfAluno & "', '" & CpfFavorecido & "', '" & NomeFavorecido & "','" & Curso & "','" & Turma & "','" & CodBanco & "','" & Agencia & "','" & DigitoAgencia & "','" & ContaCorrente & "','" & ContaDigito & "','" & FormaPgto & "','" & OBS & "','" & MotivoCancelamento & "','" & HorasFreqAluno & "', " & ValorDevido & ", '" & ValorDevidoExtenso & "', '" & CargaHorariaCurso & "', " & ValorCurso & ", '" & ValorCursoExtenso & "', " & ValorRestituir & ", '" & ValorRestituirExtenso & "')"

    -------------------------------------------------

    Código Completo


    Private Sub BtSalvar_Click()

    CodAno = Year(Date)
    DataCancelamento = Date
    Atendente = txtUsuarioAtual

    If IsNull(Me.CpfAluno) Then
    MsgBox "Preencha o campo CPF do Aluno", vbCritical, "Atenção"
    Me.CpfAluno.SetFocus
    Me.CpfAluno.BackColor = 13434879

    ElseIf IsNull(Me.NomeAluno) Then
    MsgBox "Preencha o campo Nome do Aluno", vbCritical, "Atenção"
    Me.NomeAluno.SetFocus
    Me.NomeAluno.BackColor = 13434879

    ElseIf IsNull(Me.Curso) Then
    MsgBox "Preencha o campo Curso", vbCritical, "Atenção"
    Me.Curso.SetFocus
    Me.Curso.BackColor = 13434879

    ElseIf IsNull(Me.Turma) Then
    MsgBox "Preencha o campo Turma", vbCritical, "Atenção"
    Me.Turma.SetFocus
    Me.Turma.BackColor = 13434879

    ElseIf IsNull(Me.MotivoCancelamento) Then
    MsgBox "Preencha o campo Motivo do Cancelamento", vbCritical, "Atenção"
    Me.MotivoCancelamento.SetFocus
    Me.MotivoCancelamento.BackColor = 13434879

    ElseIf IsNull(Me.CpfFavorecido) Then
    MsgBox "Preencha o campo CPF do Favorecido", vbCritical, "Atenção"
    Me.CpfFavorecido.SetFocus
    Me.CpfFavorecido.BackColor = 13434879

    ElseIf IsNull(Me.NomeFavorecido) Then
    MsgBox "Preencha o campo Nome do Favorecido", vbCritical, "Atenção"
    Me.NomeFavorecido.SetFocus
    Me.NomeFavorecido.BackColor = 13434879

    ElseIf IsNull(Me.CodBanco) Then
    MsgBox "Preencha o campo Código do Banco", vbCritical, "Atenção"
    Me.CodBanco.SetFocus
    Me.CodBanco.BackColor = 13434879

    ElseIf IsNull(Me.Banco) Then
    MsgBox "Preencha o campo Banco", vbCritical, "Atenção"
    Me.Banco.SetFocus
    Me.Banco.BackColor = 13434879

    ElseIf IsNull(Me.Agencia) Then
    MsgBox "Preencha o campo Agência", vbCritical, "Atenção"
    Me.Agencia.SetFocus
    Me.Agencia.BackColor = 13434879

    ElseIf IsNull(Me.ContaCorrente) Then
    MsgBox "Preencha o campo Conta Corrente", vbCritical, "Atenção"
    Me.ContaCorrente.SetFocus
    Me.ContaCorrente.BackColor = 13434879

    ElseIf IsNull(Me.ContaDigito) Then
    MsgBox "Preencha o campo Dígito da Conta", vbCritical, "Atenção"
    Me.ContaDigito.SetFocus
    Me.ContaDigito.BackColor = 13434879

    ElseIf IsNull(Me.FormaPgto) Then
    MsgBox "Preencha o campo Forma de Pgto", vbCritical, "Atenção"
    Me.FormaPgto.SetFocus
    Me.FormaPgto.BackColor = 13434879

    ElseIf IsNull(Me.CargaHorariaCurso) Then
    MsgBox "Preencha o campo Carga Horaria do Curso", vbCritical, "Atenção"
    Me.CargaHorariaCurso.SetFocus
    Me.CargaHorariaCurso.BackColor = 13434879

    ElseIf IsNull(Me.ValorCurso) Then
    MsgBox "Preencha o campo Valor do Curso", vbCritical, "Atenção"
    Me.ValorCurso.SetFocus
    Me.ValorCurso.BackColor = 13434879

    ElseIf IsNull(Me.ValorCursoExtenso) Then
    MsgBox "Preencha o campo Valor do Curso por Extenso", vbCritical, "Atenção"
    Me.ValorCursoExtenso.SetFocus
    Me.ValorCursoExtenso.BackColor = 13434879
    Me.ValorCurso.SetFocus
    Me.ValorCurso.BackColor = 13434879


    Else

       CurrentDb.Execute "INSERT INTO tblSysDevCadCancelamento (CodAno, DataCancelamento, Atendente, CpfAluno, CpfFavorecido, NomeFavorecido, Curso, Turma, CodBanco, Agencia, DigitoAgencia, ContaCorrente, ContaDigito, FormaPgto, OBS, MotivoCancelamento, HorasFreqAluno, ValorDevido, ValorDevidoExtenso, CargaHorariaCurso, ValorCurso, ValorCursoExtenso, ValorRestituir, ValorRestituirExtenso) VALUES ('" & CodAno & "', '" & DataCancelamento.value & "', '" & Atendente & "', '" & CpfAluno & "', '" & CpfFavorecido & "', '" & NomeFavorecido & "','" & Curso & "','" & Turma & "','" & CodBanco & "','" & Agencia & "','" & DigitoAgencia & "','" & ContaCorrente & "','" & ContaDigito & "','" & FormaPgto & "','" & OBS & "','" & MotivoCancelamento & "','" & HorasFreqAluno & "', " & ValorDevido & ", '" & ValorDevidoExtenso & "', '" & CargaHorariaCurso & "', " & ValorCurso & ", '" & ValorCursoExtenso & "', " & ValorRestituir & ", '" & ValorRestituirExtenso & "')"
       Favorecido = FavorecidoTemp
       Form.Undo
       DoCmd.Close
       MsgBox ("Os dados foram gravados com sucesso!"), vbInformation, "Dados"
       
       
    End If


    End Sub
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2816
    Registrado : 22/11/2016

    Copiar dados de uma tabela para outra tabela via VBA Empty Re: Copiar dados de uma tabela para outra tabela via VBA

    Mensagem  DamascenoJr. Sex 20 Mar 2020, 5:33 am

    Remova os pontos, e depois troque as vírgulas por ponto.

    isso remove os pontos
    Código:
    Replace(SEU_CAMPO_OU_VARIAVEL, ".", "")

    isso troca as vírgulas por ponto
    Código:
    Replace(SEU_CAMPO_OU_VARIAVEL, ",", ".")


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    welson3001
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 19/04/2017

    Copiar dados de uma tabela para outra tabela via VBA Empty Copiar dados de uma tabela para outra tabela via VBA

    Mensagem  welson3001 Sex 20 Mar 2020, 11:46 pm

    Olá Damaceno!

    Muito obrigado pela sua atenção. Peço desculpa pela minha falta de entendimento, mas não entendi onde devo colocar este código ou trocar os pontos.

    o que tentei foi isto:

    CurrentDb.Execute "INSERT INTO tblSysDevCadCancelamento (CodAno. DataCancelamento. Atendente. CpfAluno. CpfFavorecido. NomeFavorecido. Curso. Turma. CodBanco. Agencia. DigitoAgencia. ContaCorrente. ContaDigito. FormaPgto. OBS. MotivoCancelamento. HorasFreqAluno. ValorDevido. ValorDevidoExtenso. CargaHorariaCurso. ValorCurso. ValorCursoExtenso. ValorRestituir. ValorRestituirExtenso) VALUES ('" & CodAno & "'. '" & DataCancelamento.value & "'. '" & Atendente & "'. '" & CpfAluno & "'. '" & CpfFavorecido & "'. '" & NomeFavorecido & "'.'" & Curso & "'.'" & Turma & "'.'" & CodBanco & "'.'" & Agencia & "'.'" & DigitoAgencia & "'.'" & ContaCorrente & "'.'" & ContaDigito & "'.'" & FormaPgto & "'.'" & OBS & "'.'" & MotivoCancelamento & "'.'" & HorasFreqAluno & "'. " & ValorDevido & ". '" & ValorDevidoExtenso & "'. '" & CargaHorariaCurso & "'. " & ValorCurso & ". '" & ValorCursoExtenso & "'. " & ValorRestituir & ". '" & ValorRestituirExtenso & "')"

    Mas não deu certo (Creio que realmente não entendi o que fazer)

    At.te,

    Welson Souza
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2816
    Registrado : 22/11/2016

    Copiar dados de uma tabela para outra tabela via VBA Empty Re: Copiar dados de uma tabela para outra tabela via VBA

    Mensagem  DamascenoJr. Sex 20 Mar 2020, 11:59 pm

    Esses são os campos que podem ter parte decimal.
    ValorDevido
    ValorCurso
    ValorRestituir

    Eu disse para tirar os pontos e trocar as vírgulas por pontos. Ou seja, você deve trabalhar estes campos para que neles não existam, por exemplo, o valor 1.456,27

    O campo deveria ser apresentado no comando como 1456.27

    Para que isso aconteça, então, por exemplo, minha dica ficaria assim em um deles
    Código:
    replace(replace(ValorDevido, ".", ""), ",", ".")


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

      Data/hora atual: Dom 13 Jun 2021, 12:43 am