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


3 participantes

    [Resolvido]Substituir Registros em formulário com origem na tabela.

    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  XPTOS 5/8/2015, 12:31

    Prezados, bom dia,

    Tem alguns registros no Form_Itens enviados que gostaria de substituir o campo CódGuia via código.

    Ex: No form acima eu filtro os registros que preciso por meio das combos cboEnviados e cboDtAtendimento, após isso que clico no BtnSubstitui que abre o form frmSubstituirGuia com os dados a substituir.

    Alguém poderia me dar um auxilio na execução do código?

    Segue BD_TESTE link https://www.dropbox.com/s/bec83pkuxxn7054/BD_TESTE.accdb?dl=0
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  XPTOS 7/8/2015, 15:37

    Up.
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  XPTOS 10/8/2015, 16:37

    Up.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  Alvaro Teixeira 10/8/2015, 17:01

    Olá, tente com um consulta Update
    Se não conseguir, estamos cá.
    Abraço
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  XPTOS 10/8/2015, 17:31

    Olá,

    se puder me clarear as ideias eu agradeço, pois estou tentando no UPDATE abaixo mas não vai.

    UPDATE Enviado SET Enviado.CódGuia = [Forms]![Form_Itens enviados]![txtGuiaSubstituir];
    Julio Lustosa
    Julio Lustosa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 203
    Registrado : 23/02/2011

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  Julio Lustosa 10/8/2015, 17:53

    Olá meu caro,

    No código do botão btnLoop_Click(), faça as seguinte alterações:

    De Substituir = "txtGuiaAtual" para Substituir = Me.txtGuiaAtual
    De Por = "txtGuiaSubstituir" para Por = Me.txtGuiaSubstituir
    De rs("txtGuiaAtual") = Por para rs.Fields("CódGuia") = Por

    Faça o teste e veja se o resultado é o esperado.

    Att.
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  XPTOS 10/8/2015, 18:29

    Perfeito,

    Obrigado aos amigos, funcionou que é uma maravilha!
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  XPTOS 11/8/2015, 00:20

    Reabrindo para esclarecimentos.

    O codigo funcionou muito bem para uma tabela local, ja para tabela vinculada em banco dividido o mesmo nao executa, segue.

    'Inicio o tratamento de erros
    On Error GoTo TratareiErro

    'Declaro a variável que referenciará o recordset
    Dim rs As DAO.Recordset
    'Declaro a variável que armazenará o texto que será substituído
    Dim Substituir As String
    'Declaro a variável que armazenará o texto a substituir o outro
    Dim Por As String
    'Declaro a variável que contabilizará o total de registros no recordset
    Dim Contador As Long
    'Declaro a variável que armazenará as passadas pelo loop
    'usando a estrutura for next em relação ao contador
    Dim ContaMove As Long
    'Declaro a variável que armazenará a quantidade de registros
    'modificados a cada passada do loop
    Dim ContaSubst As Long
    'Instancio o recordset, com isso obtenho o conjunto
    'de registros
    Set rs = CurrentDb.OpenRecordset("Enviado") 'Tentei um dbOpenDynaset e naofuncionou

    'Armazeno na variável o valor que será substituido
    Substituir = Me.txtGuiaAtual

    'Armazeno na variável o valor que substituirá o valor
    'da variável 'Substituir'
    Por = Me.txtGuiaSubstituir

    'Armazeno zero na variável que contará as substituições.
    'A cada passada do loop ela receberá um valor
    ContaSubst = 0

    'Armazeno na variável a quantidade de registros do recordset
    Contador = rs.RecordCount

    'Abro a barra de progresso nativa do pacote office
    SysCmd acSysCmdInitMeter, "Aguarde a finalização...", Contador

    'Armazeno 1 na variável ContaMove e a cada passada do loop seu
    'valor evolui 'em + 1', quando chegar no ultimo valor da variável
    'Contador o loop se completa
    For ContaMove = 1 To Contador

    'Atualizo a progressão da barra de progresso do office
    SysCmd acSysCmdUpdateMeter, ContaMove

    'Analiso com o if se na passada pelo registro o valor
    If rs("CódGuia") = Substituir Then 'Se for igual então:

    'Armazeno + 1 na variável ContaSubst
    ContaSubst = ContaSubst + 1
    'Abro o registro para edição
    rs.Edit
    'Susbstituo o valor atual de CodGuia
    rs.Fields("CódGuia") = Por
    'Atualizo o registro
    rs.Update
    'Movo ao próximo
    rs.MoveNext

    Else

    'Senão movo a frente
    rs.MoveNext
    End If

    'Passo a frente em ContaMove, com isso iniciaremos de novo lá em cima
    'a partir do 'For ContaMove' em uma nova passada em um novo registro
    Next ContaMove

    'Fecho o recordset, uma vez que não o percorrerei mais.
    rs.Close

    'Removo a barra de progresso
    SysCmd acSysCmdRemoveMeter

    'Aqui analiso a quantidade de substituições
    If ContaSubst > 1 Then

    'Se foi mais que um registro modificado, envio uma mensagem no plural
    MsgBox "Total de: " & Contador & " registros. Realizado " _
    & ContaSubst & " substituições."
    Else
    'Se não envio no singular
    MsgBox "Total de: " & Contador & " registros. Realizado " _
    & ContaSubst & " substituição."
    End If

    'Se o algoritmo funcionou, então encerro o trtamento de erro
    Exit_TratareiErro:
    Exit Sub

    'Se algo inesperado acontecer e impedir o correto funcionamento do algoritmo
    'Então disparo o tratamento de erro
    TratareiErro:
    MsgBox "Aconteceu falha neste processamento." _
    & vbCrLf & "Trata-se do erro n°: " & err.Number _
    & vbCrLf & "Descrição: " _
    & err.Number, vbInformation, "Erro inesperado"

    Exit Sub
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  Alvaro Teixeira 11/8/2015, 10:26

    Olá Gomes, teste com o seguinte código no botão:

    Código:
    Private Sub btnLoop_Click()

        Dim db As DAO.Database
        Set db = CurrentDb

        db.Execute "UPDATE Enviado SET Enviado.CódGuia = '" & Me.txtGuiaSubstituir & "' WHERE Enviado.CódGuia = '" & Me.txtGuiaAtual & "';"
       
        MsgBox "Realizado " & db.RecordsAffected & " substituições.", vbInformation, ""

    End Sub

    Abraço
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  XPTOS 11/8/2015, 12:58

    Funciona, porém, quando tenha duas datas no mesmo CódGuia ele altera todos os registros do CódGuia .

    Tentei o código marcado em vermelho, mas aparece o erro 3075 (and DtAtendimento = '1';.

    db.Execute "UPDATE Enviado SET Enviado.CódGuia = '" & Me.txtGuiaSubstituir & "' WHERE Enviado.CódGuia = '" & Me.txtGuiaAtual & " and DtAtendimento = '" & Me.DtAtual & "';"


    Julio Lustosa
    Julio Lustosa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 203
    Registrado : 23/02/2011

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  Julio Lustosa 11/8/2015, 13:58

    Olá!

    Tente da forma que coloquei abaixo. No teste que eu fiz deu certo.

    db.Execute "UPDATE Enviado SET Enviado.CódGuia = '" & Me.txtGuiaSubstituir & _
    "' WHERE Enviado.CódGuia = '" & Me.txtGuiaAtual & "' AND Enviado.DtAtendimento = #" & Me.dtAtual.Column(0) & "#;"
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  Alvaro Teixeira 11/8/2015, 14:44

    Olá a todos Smile

    Gomes, um pouco à parte da questão por si formulada, já tentou introduzir uma data directamente na tabela?

    Veja abaixo:
    [Resolvido]Substituir Registros em formulário com origem na tabela. 29ofo0w

    Se é um campo tipo data, porque é que tem do tipo texto ????
    Veja:
    [Resolvido]Substituir Registros em formulário com origem na tabela. 2ir18qo

    Sou da opinião que deve rever a estrutura da sua tabela de dados.

    Quanto à última questão, siga a instrução do nosso colega Julio Lustosa.

    Abraço
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  XPTOS 11/8/2015, 15:09

    Agradeço as dicas, certamente vou alterar a estrutura da tabela.

    Deem uma olhada no exemplo anexo, por favor, não modificou os dados quando tem duas datas distintas.

    https://www.dropbox.com/s/bec83pkuxxn7054/BD_TESTE.accdb?dl=0
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  Alvaro Teixeira 11/8/2015, 16:58

    Olá, proceda ao ajuste do campo na tabela para o tipo Data e teste com codigo abaixo

    Código:
    Dim db As DAO.Database
    Set db = CurrentDb
    db.Execute "UPDATE Enviado SET Enviado.CódGuia = '" & Me.txtGuiaSubstituir & _
     "' WHERE Enviado.CódGuia = '" & Me.txtGuiaAtual & "' AND Enviado.DtAtendimento = #" & Format(Me.DtAtual.Column(0), "mm/dd/yyyy") & "#;"
     MsgBox "Realizado " & db.RecordsAffected & " substituições.", vbInformation, ""

    End Sub

    Abraço
    XPTOS
    XPTOS
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 601
    Registrado : 20/01/2014

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  XPTOS 12/8/2015, 00:46

    Olá amigo,

    Agradeço ambas as sugestões.

    O código funcionou perfeitamente.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  Alvaro Teixeira 12/8/2015, 08:14

    Ola, obrigado pelo retorno.
    Abraço a todos.

    Conteúdo patrocinado


    [Resolvido]Substituir Registros em formulário com origem na tabela. Empty Re: [Resolvido]Substituir Registros em formulário com origem na tabela.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 20:07