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

    Não executar código em campo vazio

    Compartilhe

    vailson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 08/05/2015

    Não executar código em campo vazio

    Mensagem  vailson em Seg 22 Maio 2017, 18:46

    Olá,
    tenho um formulário que serve para atualização de dados, caso o usuário resolva editar uma informação que ele lançou anteriormente.
    ocorre que um dos campos pode estar vazio ou ter suas informações apagadas pelo usuário.
    Como fazer o UPDATE entender isso?
    Código:
    Dim DB As DAO.Database
    Set DB = CurrentDb()
    DB.Execute "UPDATE produtividade SET pessoas= " & Me.pessoas & " where produtividade.codproduti= " & Me.codProduti & ""
    DB.Execute "UPDATE produtividade SET opo= " & Me.opo & " where produtividade.codproduti= " & Me.codProduti & ""
    MsgBox "Deseja confirmar as alterações de produtividade?", vbCritical, "Atenção"
    DoCmd.Close
    'Forms![Telainicial].Refresh
    End Sub

    Dessa forma aí, caso o campo "opo", por exemplo, esteja vazio, o código dá erro. E, caso eu precise que o conteúdo dele seja deletado? O ideal seria que o UPDATE gravasse nada... Como fazer isso?

    Obrigado
    avatar
    ronaldojr1
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 01/08/2011

    Re: Não executar código em campo vazio

    Mensagem  ronaldojr1 em Seg 22 Maio 2017, 19:18

    tente usar a funcao nz. exemplo:
    Código:

    DB.Execute "UPDATE produtividade SET opo= " & nz(Me.opo,"") & " where produtividade.codproduti= " & Me.codProduti & ""
    'a funcao nz substitui o nulo por qualquer outro valor. nz(campo,valorSeNulo)

    vailson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 08/05/2015

    Re: Não executar código em campo vazio

    Mensagem  vailson em Ter 23 Maio 2017, 02:36

    Certo, até aí tudo bem, primeira parte solucionada. Agora imagine que o dado já existe e que eu preciso apagá-lo.
    Como eu insiro um valor nulo se o campo estiver nulo?
    Exemplo: opo tem o valor 2, mas o usuário deseja apagar e deixar em branco (não pode ser 0)
    nz(campo, nulo)

    Como fazer?
    Obrigado!
    avatar
    philipp.moreira
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 256
    Registrado : 05/02/2016

    Re: Não executar código em campo vazio

    Mensagem  philipp.moreira em Ter 23 Maio 2017, 05:25

    Vê se isto ajuda:
    Código:
         Dim DB As DAO.Database
          Dim strSQL_Update As String
          
          Set DB = CurrentDb()
          strSQL_Update = "UPDATE Produtividade SET " _
                                              & "pessoas= '" & Me.pessoas & "' " _
                                              & ",opo= " & IIf(Me.opo <> "", Me.opo, Null) & " " _
                                        & "WHERE ( codproduti= " & Me.codProduti & " ) "
                
          DoCmd.RunSQL (strSQL_Update)
          MsgBox "Deseja confirmar as alterações de produtividade?", vbCritical, "Atenção"
          DoCmd.Close
          'Forms![Telainicial].Refresh

    vailson
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 129
    Registrado : 08/05/2015

    Re: Não executar código em campo vazio

    Mensagem  vailson em Ter 23 Maio 2017, 15:55

    Ainda não funcionou
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6496
    Registrado : 05/11/2009

    Re: Não executar código em campo vazio

    Mensagem  Alexandre Neves em Seg 12 Jun 2017, 19:06

    Boa tarde,
    Código:
        Dim Rst As DAO.Recordset
        Set Rst = CurrentDb.OpenRecordset("SELECT Produtividade WHERE codproduti= " & Me.codProduti)
        With Rst
            !pessoas = Me.pessoas
            !opo = Me.opo
        End With
    Não entendi a pergunta na caixa de mensagem, sem possibilidade de escolha


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

      Data/hora atual: Sab 18 Nov 2017, 13:44