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

    Condicional IF com vários campos

    avatar
    RegisBorda
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 18
    Registrado : 07/02/2014

    Condicional IF com vários campos Empty Condicional IF com vários campos

    Mensagem  RegisBorda Qua 17 Fev 2021, 13:37

    Prezados,

    Preciso atualizar uma tabela obedecendo a alguns critérios.

    Criei um código a seguir porém o IF não funciona como acertar isso ?

    Dim db As Database
    Dim CurFornecTransp As String
    Dim CurFornecRecep As String
    Dim CurValTranspCliente As Double
    Dim CurValTranspAmbVerde As Double
    Dim CurValUnitCliente As Double
    Dim CurValUnitAmbVerde As Double
    Dim rstMovPA As DAO.Recordset
    Dim strCriteria As String
    Dim intResp As String
    Dim stDocName As String

    'Coloca o Lançamento da Nota na TbMov de Estoque PA'
    MsgBox "Esse Registro será adicionado na Tabela de Despesas II !!!", vbCritical, "Atenção !!!"
    intResp = MsgBox("Confirma a adição do registro ?", vbYesNo, "Atenção !!!")
    Select Case intResp
    Case vbYes
    'Coloca o Lançamento da Nota na TbMov de Estoque PA'

    If Me.RegInserido = 0 And Me.ClasseRes = "Classe II" And Me.TipoOS = "Normal" And Me.Serviço = "Troca" Or Me.Serviço = "Retirada" Then (O IF NÃO ESTÁ FUNCIONANDO)

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurValTranspCliente = DLookup("[PrTransp]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurValTranspAmbVerde = DLookup("[PrTranspAmbVerde]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurValUnitCliente = DLookup("[ValUnit]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurValUnitAmbVerde = DLookup("[ValUnitAmbVerde]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurFornecTransp = DLookup("[FornecTransp]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurFornecRecep = DLookup("[FornecReceptor]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set db = CurrentDb()
    Set rstMovPA = CurrentDb.OpenRecordset("TbDespesas_Classe2")
    Set rstMovPA = db.OpenRecordset("TbDespesas_Classe2")
    rstMovPA.AddNew
    rstMovPA("CodDesp2Medicoes") = Me.NumOS
    rstMovPA("CNPJCliente") = Me.CNPJCliente
    rstMovPA("DtColeta") = Me.DtColetada
    rstMovPA("NumManifesto") = Me.NumManifesto
    rstMovPA("Residuo") = Me.Residuo
    rstMovPA("FornecTransp") = CurFornecTransp
    rstMovPA("FornecReceptor") = CurFornecRecep
    rstMovPA("QtdEquip") = Me.QtdColetada
    rstMovPA("UnidMed") = Me.UnidMed
    rstMovPA("ValTransp") = CurValTranspCliente
    rstMovPA("ValTranspAmbVerde") = CurValTranspAmbVerde
    rstMovPA("ValUnit") = CurValUnitCliente
    rstMovPA("ValUnitAmbVerde") = CurValUnitAmbVerde
    rstMovPA.Update
    rstMovPA.Close

    RegInserido.Value = -1
    Else
    If Me.RegInserido = 0 And Me.ClasseRes = "Classe II" And Me.TipoOS = "Medição" And Me.Serviço = "Troca" Or Me.Serviço = "Retirada" Then
    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurValTranspCliente = DLookup("[PrTransp]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurValTranspAmbVerde = DLookup("[PrTranspAmbVerde]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurValUnitCliente = DLookup("[ValUnit]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurValUnitAmbVerde = DLookup("[ValUnitAmbVerde]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurFornecTransp = DLookup("[FornecTransp]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set rstMovPA = CurrentDb.OpenRecordset("TbPrecosDespesas")
    CurFornecRecep = DLookup("[FornecReceptor]", "TbPrecosDespesas", "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'")
    strCriteria = "[Residuo]='" & Me.Residuo & "'" & " And [CNPJCliente]='" & Me.CNPJCliente & "'"
    rstMovPA.FindFirst strCriteria

    Set db = CurrentDb()
    Set rstMovPA = CurrentDb.OpenRecordset("TbDespesas2_Medicoes")
    Set rstMovPA = db.OpenRecordset("TbDespesas_Classe2")
    rstMovPA.AddNew
    rstMovPA("CNPJCliente") = Me.CNPJCliente
    rstMovPA("DtColeta") = Me.DtColetada
    rstMovPA("NumManifesto") = Me.NumManifesto
    rstMovPA("Residuo") = Me.Residuo
    rstMovPA("FornecTransp") = CurFornecTransp
    rstMovPA("FornecReceptor") = CurFornecRecep
    rstMovPA("QtdEquip") = Me.QtdColetada
    rstMovPA("UnidMed") = Me.UnidMed
    rstMovPA("ValTransp") = CurValTranspCliente
    rstMovPA("ValTranspAmbVerde") = CurValTranspAmbVerde
    rstMovPA("ValUnit") = CurValUnitCliente
    rstMovPA("ValUnitAmbVerde") = CurValUnitAmbVerde
    rstMovPA.Update
    rstMovPA.Close

    RegInserido.Value = -1
    Else
    MsgBox "Comando inválido. A adição do Registro está fora dos critérios estabelecidos !!!", vbInformation, "Atenção !!!"
    DoCmd.CancelEvent
    End If
    End If
    Case vbNo
    MsgBox "Adição do Registro Cancelado !!!", vbInformation, "Atenção !!!"
    DoCmd.CancelEvent
    End Select
    End Sub

    Não estou conseguindo acertar o IF ele está fazendo a operação mesmo fora dos critérios estabelecidos.

    Se estes forem os critérios : RegInserido = 0; ClasseRes = "Classe II"; TipoOS = "Normal"; Serviço = "Troca" ou Serviço = "Retirada"
    Insere registro na TabDespesas_Classe2

    Se estes forem os critérios : RegInserido = 0; ClasseRes = "Classe II"; TipoOS = "Medição"; Serviço = "Troca" ou Serviço = "Retirada"
    Insere registro na TabDespesas_Medição

    Alguém poderia me dar um help ?

    Muito grato,

    Abs,

    Regis
    =>Nois
    =>Nois
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 908
    Registrado : 09/11/2012

    Condicional IF com vários campos Empty Re: Condicional IF com vários campos

    Mensagem  =>Nois Qua 17 Fev 2021, 15:37

    mude no if esse início e nos fale

    If Me.RegInserido.value = 0

    ou

    If Me.RegInserido = false


    .................................................................................
    Att. Nois

    Se tudo não der certo... tente de novo drunken
    Noobezinho
    Noobezinho
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4121
    Registrado : 29/06/2012

    Condicional IF com vários campos Empty Re: Condicional IF com vários campos

    Mensagem  Noobezinho Qua 17 Fev 2021, 16:05

    Caso a dica do Nóis não funfe, faça o seguinte:

    Experimente isso: Coloque esses parênteses em vermelho

    If Me.RegInserido = 0 And Me.ClasseRes = "Classe II" And Me.TipoOS = "Normal" And (Me.Serviço = "Troca" Or Me.Serviço = "Retirada") Then

    Explicando, os parênteses fazem com com que o código resolva  primeiro o que tem dentro deles para depois executar o IF.
    Por isso o não funfava.


    Se não deu certo:


    Teste cada If da frase separadamente, e quando todos estiver corretos, pode unir eles.

    Ex.:

    If Me.RegInserido = 0 then  
    ....
    endif
    funfou teste outra:

    Me.ClasseRes = "Classe II"  then
    ...
    Endif

    E assim vai até o final da linha.

    { }'s

    Balem


    Última edição por Noobezinho em Qui 18 Fev 2021, 08:22, editado 1 vez(es)


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1455
    Registrado : 13/12/2016

    Condicional IF com vários campos Empty Re: Condicional IF com vários campos

    Mensagem  Alexandre Fim Qua 17 Fev 2021, 16:08

    Ola Regis,

    Na linha que está gerando erro, tente isso:

    If Nz(IsNull(Me.RegInserido), 0) = 0 And _
      Me.ClasseRes = "Classe II" And _
      Me.TipoOS = "Normal" And _
      (Me.Serviço = "Troca" Or Me.Serviço = "Retirada") Then
      'executa conforme condição acima

    End If


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1455
    Registrado : 13/12/2016

    Condicional IF com vários campos Empty Re: Condicional IF com vários campos

    Mensagem  Alexandre Fim Qua 17 Fev 2021, 16:10

    Ops....
    Estava elaborando a resposta quando o caro amigo @noobezinho postou!!!
    Me desculpe !!!

    rsssss


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.
    Noobezinho
    Noobezinho
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4121
    Registrado : 29/06/2012

    Condicional IF com vários campos Empty Re: Condicional IF com vários campos

    Mensagem  Noobezinho Qua 17 Fev 2021, 16:23

    Poxa Alexandre

    Você corroborou o que eu escrevi.

    E isso não é a primeira e nem será a ultima disso acontecer,

    num lugar que tem pessoas que manja dos paranauês do amado MSAcess. Razz

    Fica na paz irmão!


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.

    Alexandre Fim gosta desta mensagem

    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1455
    Registrado : 13/12/2016

    Condicional IF com vários campos Empty Re: Condicional IF com vários campos

    Mensagem  Alexandre Fim Qua 17 Fev 2021, 16:33

    HAHAHAHA...
    Valeu Noobezinho !!
    Se eu manjasse metade do que vc manja, já tava bom demais !!!
    Abraços Mestre


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.
    Noobezinho
    Noobezinho
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4121
    Registrado : 29/06/2012

    Condicional IF com vários campos Empty Re: Condicional IF com vários campos

    Mensagem  Noobezinho Qua 17 Fev 2021, 16:43


    Sei, kkk

    Para encerrar, vendo tuas respostas,
    sou o neófito que senta aos pés do mestre para aprender!

    { }'s

    Balem


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    RegisBorda
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 18
    Registrado : 07/02/2014

    Condicional IF com vários campos Empty Condicional IF com vários campos

    Mensagem  RegisBorda Qui 18 Fev 2021, 08:18

    Prezados,

    Muito grato pela ajuda de vocês.

    Bastou eu inserir os parenteses na condição do OR dentro do If.

    Funcionou perfeitamente.

    Muito Grato,

    Abs para todos.

    Regis Borda
    Noobezinho
    Noobezinho
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4121
    Registrado : 29/06/2012

    Condicional IF com vários campos Empty Re: Condicional IF com vários campos

    Mensagem  Noobezinho Qui 18 Fev 2021, 08:21

    Ótimo Regis

    Peço que edite teu último post, e aperte o botão Resolvido, para fechar o tópico.

    Boa sorte!

    Balem


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.

      Data/hora atual: Qua 16 Jun 2021, 11:46