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

    [Resolvido]Se não estiver na lista

    Compartilhe
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3199
    Registrado : 06/11/2009

    [Resolvido]Se não estiver na lista

    Mensagem  Assis em Sex 19 Jan 2018, 23:40

    Boa noite Amigos

    É com este código abaixo que utilizo para a função " Se não estiver na lista". E funciona perfeito

    Código:
    Private Sub Cliente_NotInList(NewData As String, Response As Integer)

    Dim SQL As String
    Dim Contribuinte As String
    Dim Cidade As String
    DoCmd.SetWarnings False
    If MsgBox("Cliente " & Proper(NewData) & " Não Registado" & vbCrLf & "Deseja Registar o Cliente " & "Agora ?", vbInformation + vbYesNo, "Aviso") = vbYes Then
    SQL = "INSERT INTO Clientes (Nome) VALUES ('" & Proper(NewData) & "')"
    DoCmd.RunSQL SQL
    Contribuinte = InputBox("Qual é o Nº de Contribuinte ?", "Contribuinte")
    CurrentDb.Execute "UPDATE Clientes SET Contribuinte = ('" & Format(Contribuinte, "### ### ###") & "') WHERE '" & Proper(NewData) & "' = nome"
    Cidade = InputBox("Qual é a Cidade ?", "Cidade")
    CurrentDb.Execute "UPDATE Clientes SET Cidade = ('" & Proper(Cidade) & "') WHERE '" & Proper(NewData) & "' = nome"
    Response = acDataErrAdded
    Else
    Response = acDataErrDisplay
    End If
    DoCmd.SetWarnings True

    End Sub

    Mas queria aprimorar o mesmo para detetar quando o Nº de Contribuinte já está registado na tabela e avisar.

    Onde meter o código que está aqui em baixo no código que está acima ?


    Código:
    '==============================
    If (Not IsNull(DLookup("[Contribuinte]", "Clientes", "[Contribuinte] ='" & Me!txtContribuinte & "'"))) Then
           MsgBox "O Nº de Contribuinte " & txtContribuinte & " Já Existe na Tabela de Clientes.", vbInformation, "Aviso"
           Me.txtContribuinte.SetFocus
            Me.txtContribuinte = Null
           Exit Sub
           End If
    '====================================

    Obrigado


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3710
    Registrado : 14/08/2013

    Re: [Resolvido]Se não estiver na lista

    Mensagem  FabioPaes em Sab 20 Jan 2018, 01:24

    Que tal aqui:


    Private Sub Cliente_NotInList(NewData As String, Response As Integer)

    Dim SQL As String
    Dim Contribuinte As String
    Dim Cidade As String
    DoCmd.SetWarnings False
    If MsgBox("Cliente " & Proper(NewData) & " Não Registado" & vbCrLf & "Deseja Registar o Cliente " & "Agora ?", vbInformation + vbYesNo, "Aviso") = vbYes Then
    SQL = "INSERT INTO Clientes (Nome) VALUES ('" & Proper(NewData) & "')"
    DoCmd.RunSQL SQL
    Contribuinte = InputBox("Qual é o Nº de Contribuinte ?", "Contribuinte")

    If (Not IsNull(DLookup("[Contribuinte]", "Clientes", "[Contribuinte] ='" & Contribuinte & "'"))) Then
    MsgBox "O Nº de Contribuinte " & Contribuinte & " Já Existe na Tabela de Clientes.", vbInformation, "Aviso"
    Me.txtContribuinte.SetFocus
    Me.txtContribuinte = Null
    Exit Sub
    else

    CurrentDb.Execute "UPDATE Clientes SET Contribuinte = ('" & Format(Contribuinte, "### ### ###") & "') WHERE '" & Proper(NewData) & "' = nome"
    Cidade = InputBox("Qual é a Cidade ?", "Cidade")
    CurrentDb.Execute "UPDATE Clientes SET Cidade = ('" & Proper(Cidade) & "') WHERE '" & Proper(NewData) & "' = nome"
    Response = acDataErrAdded
    end if
    Else
    Response = acDataErrDisplay
    End If
    DoCmd.SetWarnings True

    End Sub


    O Contribuinte Destacado em vermelho se refere a Variável que recebe o Valor da InputBox ta. Talvez seja melhor mudar o nome dela.

    Estou partindo da Ideia de que apos O InputBox, vc quer verificar se o Contribuinte existe mesmo, se nao for isso detalhe melhor sua duvida!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3199
    Registrado : 06/11/2009

    Re: [Resolvido]Se não estiver na lista

    Mensagem  Assis em Sab 20 Jan 2018, 13:10

    Bom dia Fabio

    A Intenção é mesmo impedir repetir Nº contribuinte na tabela

    Alterei Contribuinte para NContribuinte.

    Só tem um formulário, e é no campo "Cliente"

    Mas não funciona .... por favor teste, na tabela já tem um cliente com o número de contribuinte nº 123123123
    Anexos
    NãoNa Lista Assis.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (221 Kb) Baixado 15 vez(es)


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    tauron
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 827
    Registrado : 07/12/2011

    Re: [Resolvido]Se não estiver na lista

    Mensagem  tauron em Dom 21 Jan 2018, 23:48

    Assis, fiquei confuso, voce pretende colocar um codigo de avisa que ja existe na tabela no evento se nao esta na lista?

    Mas de qualquer forma teste colocando o codigo de alerta existencia no evento "ao alterar".
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3199
    Registrado : 06/11/2009

    Re: [Resolvido]Se não estiver na lista

    Mensagem  Assis em Seg 22 Jan 2018, 10:03

    Tauron bom dia

    O evento se não estiver na lista, é para quando se digita numa caixa de combinação um dado novo.

    Neste caso o dado novo é o campo "Nome" da tabela que em 3 campos para preencher. Nome, Contribuinte e Cidade

    O método que eu uso é por inputbox (Não abre nenhum formulário novo).

    Assim que digito um nome que não está na tabela ele grava e pede de seguida para digitar o Nº Contribuinte.

    Acontece que se por erro de digitação ou por outro motivo, se o numero digitado já estiver na tabela .... Quero ser avisado para assim não continuar.


    Obrigado



    .................................................................................
    *** Só sei que nada sei ***
    avatar
    tauron
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 827
    Registrado : 07/12/2011

    Re: [Resolvido]Se não estiver na lista

    Mensagem  tauron em Seg 22 Jan 2018, 10:54

    Olha se ajuda:
    Anexos
    Teste Assis.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (222 Kb) Baixado 5 vez(es)
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3199
    Registrado : 06/11/2009

    Re: [Resolvido]Se não estiver na lista

    Mensagem  Assis em Seg 22 Jan 2018, 11:21

    Tauron

    Testou ?

    Não consigo gravar Nºs Contribuinte novos nem repetidos.

    Que alteração é que fez?

    Obrigado


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    tauron
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 827
    Registrado : 07/12/2011

    Re: [Resolvido]Se não estiver na lista

    Mensagem  tauron em Seg 22 Jan 2018, 11:49

    Embarassed

    Arquivo errado.
    Anexos
    Teste Assis1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (242 Kb) Baixado 9 vez(es)
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3199
    Registrado : 06/11/2009

    Re: [Resolvido]Se não estiver na lista

    Mensagem  Assis em Seg 22 Jan 2018, 12:01

    Pois
    Gravou o nome, mas o contribuinte não grava.

    Mas já agora teste ...

    Nome cliente

    Mário

    E Contribuinte 555 555 555


    ---------------------------------
    Devia deixar o contribuinte 555 555 555 não está na tabela



    .................................................................................
    *** Só sei que nada sei ***
    avatar
    tauron
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 827
    Registrado : 07/12/2011

    Re: [Resolvido]Se não estiver na lista

    Mensagem  tauron em Seg 22 Jan 2018, 12:28

    Não estou entendendo, aqui ta gravando. Alias se voce observar o codigo eh o seu original no evento "se nao estiver na lista". Apenas coloquei um codigo no evento "antes de atualizar".
    Anexos
    Teste Assis2.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (196 Kb) Baixado 5 vez(es)
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3199
    Registrado : 06/11/2009

    Re: [Resolvido]Se não estiver na lista

    Mensagem  Assis em Seg 22 Jan 2018, 13:59

    Tauron

    Mas grava na tabela e não devia ....

    [Você precisa estar registrado e conectado para ver esta imagem.]


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Se não estiver na lista

    Mensagem  ahteixeira em Seg 22 Jan 2018, 14:52

    Olá a todos,

    Assis, teste assim:
    Código:
    Private Sub Cliente_NotInList(NewData As String, Response As Integer)
    Dim SQL As String
    Dim NContribuinte As String
    Dim Cidade As String
    DoCmd.SetWarnings False

    If MsgBox("Cliente " & Proper(NewData) & " Não Registado" & vbCrLf & "Deseja Registar o Cliente " & "Agora ?", vbInformation + vbYesNo, "Aviso") = vbYes Then
        
        NContribuinte = InputBox("Qual é o Nº de Contribuinte ?", "Contribuinte")
        
        If DCount("Contribuinte", "Clientes", "Contribuinte = '" & Format(NContribuinte, "### ### ###") & "'" & "") > 0 Then
            MsgBox "O Nº de Contribuinte " & NContribuinte & " Já Existe na Tabela de Clientes.", vbInformation, "Aviso"
            Exit Sub
        Else
            SQL = "INSERT INTO Clientes (Nome) VALUES ('" & Proper(NewData) & "')"
            DoCmd.RunSQL SQL
            
            CurrentDb.Execute "UPDATE Clientes SET Contribuinte = ('" & Format(NContribuinte, "### ### ###") & "') WHERE '" & Proper(NewData) & "' = nome"
            Cidade = InputBox("Qual é a Cidade ?", "Cidade")
            CurrentDb.Execute "UPDATE Clientes SET Cidade = ('" & Proper(Cidade) & "') WHERE '" & Proper(NewData) & "' = nome"
            Response = acDataErrAdded
        End If
    Else
        Response = acDataErrDisplay
    End If

    DoCmd.SetWarnings True

    End Sub

    Assis, onde anda a Indentação, pedido de 2018 Very Happy

    Abraço a todos
    avatar
    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3199
    Registrado : 06/11/2009

    Re: [Resolvido]Se não estiver na lista

    Mensagem  Assis em Seg 22 Jan 2018, 15:04

    Boa Teixeira

    Obrigado

    A indentação vai mesmo ter de ser iniciada. Mas como a maior parte dos códigos estão numa BD que é quase sempre copiar e colar ... que esquece.


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Se não estiver na lista

    Mensagem  ahteixeira em Seg 22 Jan 2018, 15:29

    Olá Assis,

    Obrigado pelo retorno.
    Quanto à indentação, quando inicia alguma alteração no código antes de inciar faz a indentação dessa sub, vai ver que daqui a uns tempos já tem grande parte feita.
    Além disso, ajuda a compreender e ler melhor o código.

    Abraço

      Data/hora atual: Sab 24 Fev 2018, 13:58