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]Update com ou sem valor

    avatar
    alantb
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 243
    Registrado : 25/07/2017

    [Resolvido]Update com ou sem valor Empty [Resolvido]Update com ou sem valor

    Mensagem  alantb Ter Jul 06, 2021 5:29 pm

    Olá, estou trancado em coisa que parece trivial mas tô apanhando aqui. No evento Após Atualizar de uma Caixa de Texto executa um Insert ou Update. A lógica que estava tentando aplicar seria assim:

    - se txtS3 estava vazio e foi digitado valor, executa o INSERT;
    - se txtS3 com valor e valor é alterado, executa UPDATE;
    - ou se txtS3 com valor e valor é apagado deixando caixa de texto vazia, também executa UPDATE, só que pra deixar o campo vazio.

    Segue como estava tentado mas não atualiza pra vazio e algumas tentativas não tava nem alterando valor. A caixa de texto recebe valor de hora e minuto:

    If Not IsNull(Me.txtS3) Or Me.txtS3 <> "" Then

    CurrentDb.Execute "INSERT INTO tbApontamento(S3) values ('" & txtS3 & "')"

    Else

    CurrentDb.Execute "UPDATE tbApontamento SET s3 = '" & IIf(txtS3 = Null, "NULL", "" & Format(txtS3, "hh:mm")) & "' where CodApontamento = " & Me.txtCodApontamento

    End If

    Dá pra dá uma mão ai...

    ALAN
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Update com ou sem valor Empty Re: [Resolvido]Update com ou sem valor

    Mensagem  DamascenoJr. Ter Jul 06, 2021 6:54 pm

    O formulário é desvinculado?

    Como o código pode saber quando é novo registro ou é alteração do registro?


    .................................................................................
    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
    alantb
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 243
    Registrado : 25/07/2017

    [Resolvido]Update com ou sem valor Empty Re: [Resolvido]Update com ou sem valor

    Mensagem  alantb Ter Jul 06, 2021 6:56 pm

    Olá Danasceno, sim é desvinculado....

    ALAN
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Update com ou sem valor Empty Re: [Resolvido]Update com ou sem valor

    Mensagem  DamascenoJr. Ter Jul 06, 2021 7:01 pm

    Então seria

    Código:
    'se não existe CodApontamento, ora bolas, é novo registro :-D
    If IsNull(CodApontamento) Then

      CurrentDb.Execute "INSERT INTO tbApontamento(S3) values ('" & txtS3 & "')"

    'senão, isto é, se existe CodApontamento, será atualização
    Else

      'mas antes preciso conferir uma coisa
      'se o valor txtS3 não foi informado
      if nz(txtS3)="" then
          CurrentDb.Execute "UPDATE tbApontamento SET s3 = NULL where CodApontamento = " & Me.txtCodApontamento 'usando o CodApontamento
     
      'senão, isto é, se txtS3 existe, então posso formatar e usá-lo
      else
          CurrentDb.Execute "UPDATE tbApontamento SET s3 = '" & Format(txtS3, "hh:mm") & "' where CodApontamento = " & Me.txtCodApontamento ''novamente, já que existe, usando o CodApontamento
      end if

    End If


    .................................................................................
    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
    alantb
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 243
    Registrado : 25/07/2017

    [Resolvido]Update com ou sem valor Empty Re: [Resolvido]Update com ou sem valor

    Mensagem  alantb Ter Jul 06, 2021 7:59 pm

    Damasceno, no meu caso CodApontamento sempre existe porque vem de uma tabela em que foi gerado automaticamente pelo usuário um calendário com todos os dias da competência selecionada. Pra cada dia a chave primária é CodApontamento. Em cada dia do mês tem um horário automático do funcionário tipo: 08:00(E1) - 12:00(S1) - 13:30(E2) -17:30(S2). A partir do E3 já é hora extra. Entretanto a ideia é poder atualizar qualquer um desses campos.
    Pra testar selecione no frmGera o Funcionário Belisário, na competência 06/2020 e tentar fazer alterações : inserir horários, modificar horários, excluir apontamentos. Nesse form estou tentando fazer essas manutenções no evento Após Atualizar de cada campo do E1 até o S8. Segue cópia do bd.

    ALAN
    Anexos
    [Resolvido]Update com ou sem valor AttachmentTesteUpdate.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (140 Kb) Baixado 6 vez(es)
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Update com ou sem valor Empty Re: [Resolvido]Update com ou sem valor

    Mensagem  DamascenoJr. Ter Jul 06, 2021 11:39 pm

    Código:
    Dim objBD As DAO.Database
    Dim strValor As String

    If Nz(txtS3) = "" Then
        varValor = "Null"
    Else
        varValor = """" & Format(txtS3, "hh:mm") & """"
    End If

    'salvando o banco em uma variável
    'isso ajuda a saber se quando registros são afetados
    'na execução de um comando
    Set objBD = CurrentDb

    'executando o comando de atualização
    Call objBD.Execute("update tbApontamento set s3 = " & varValor & " where CodApontamento = " & Me.txtCodApontamento)

    'se nada foi afetado
    If objBD.RecordsAffected = 0 Then
        'insira na tabela
        Call objBD.Execute("insert into tbApontamento(S3) values (" & varValor & ")")
    End If

    'destrói a variável
    Set objBD = Nothing


    .................................................................................
    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
    alantb
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 243
    Registrado : 25/07/2017

    [Resolvido]Update com ou sem valor Empty Re: [Resolvido]Update com ou sem valor

    Mensagem  alantb Qua Jul 07, 2021 12:48 am

    Damasceno Jr, fiz o teste aqui com as alterações da sua última msg e por aqui deu tudo certo. Inclusive os códigos apresentados ali eu ainda não conhecia, ainda mais pela forma em que o código ficou mais claro, simples e objetivo. Mais um aprendizado...Valeu e Resolvido.

    ALAN

      Data/hora atual: Sab Out 01, 2022 1:52 pm