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


4 participantes

    [Resolvido]Se não estiver na lista

    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Se não estiver na lista Empty [Resolvido]Se não estiver na lista

    Mensagem  Assis 19/1/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 ***
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  FabioPaes 20/1/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!
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Assis 20/1/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


    .................................................................................
    *** Só sei que nada sei ***
    tauron
    tauron
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  tauron 21/1/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".
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Assis 22/1/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 ***
    tauron
    tauron
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  tauron 22/1/2018, 10:54

    Olha se ajuda:
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Assis 22/1/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 ***
    tauron
    tauron
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  tauron 22/1/2018, 11:49

    Embarassed

    Arquivo errado.
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Assis 22/1/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 ***
    tauron
    tauron
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  tauron 22/1/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
    [Resolvido]Se não estiver na lista AttachmentTeste Assis2.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (196 Kb) Baixado 36 vez(es)
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Assis 22/1/2018, 13:59

    Tauron

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

    [Resolvido]Se não estiver na lista Tauron10


    .................................................................................
    *** Só sei que nada sei ***
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 22/1/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
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Assis 22/1/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 ***
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 22/1/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
    tauron
    tauron
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  tauron 23/3/2018, 22:58

    Me desculpem por postar aqui mas, estou tentando adaptar o codigo e nao estou conseguindo
    Anexos
    [Resolvido]Se não estiver na lista AttachmentCadastro.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (83 Kb) Baixado 20 vez(es)


    Última edição por ahteixeira em 6/4/2018, 14:00, editado 2 vez(es) (Motivo da edição : Atualização do anexo)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 26/3/2018, 12:12

    Olá Tauron,

    O anexo da mensagem nº 15 apresenta erros de compilação.
    Ajuste o código ou as referências em falta.
    Depois poste de novo.

    Nota: Atualize anexo da mensagem nº 15, caso poste em mensagem nova, elimine o anexo anterior.
    Desta forma poupamos espaço para anexos do fórum que está curto e é pago Wink

    Abraço a todos
    tauron
    tauron
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  tauron 26/3/2018, 16:01

    Arquivo da mensagem 15 atualizado
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 5/4/2018, 15:47

    Olá Tauron,

    Altere o parametro para Sim, que já vai começar a ver o código a executar:
    [Resolvido]Se não estiver na lista 032

    Vai dar erros, será ajusatar se tiver dificuldades avise.
    Abraço
    tauron
    tauron
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  tauron 6/4/2018, 10:28

    Pessoal, apos a mensagem do ahteixeira, procedi as alteracoes mas, no final deu erro 3061 "Parametros Insuficientes. Eram esperados 1", apontando para esta linha:

    CurrentDb.Execute "UPDATE tblContribuintes SET Endereco = ('" & Proper(endAdq) & "') WHERE '" & Proper(NewData) & "' = CFPCNPJ"


    e ao tentar atualizar o meu arquivo constante da mensagem 15. o Exclui para enviar novamente o atualizado não consegui mais por espaço insuficiente.

    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 6/4/2018, 15:23

    Olá Tauron,

    Já recoloquei o ficheiro da mensagem nº 15:

    Teste com o seguinte código:
    Código:
    Private Sub CPFCNPJAD_NotInList(NewData As String, Response As Integer)
    Dim SQL As String
    Dim NContribuinte As String
    Dim Endereco As String

        If MsgBox("CPFCNPJAD " & Proper(NewData) & " Não Registado" & vbCrLf & "Deseja Registar o Cliente " & "Agora ?", vbInformation + vbYesNo, "Aviso") = vbYes Then
            NContribuinte = InputBox("Qual é o Nome do Contribuinte ?", "Contribuinte")
            SQL = "INSERT INTO tblContribuintes (CPFCNPJ, Contribuinte) VALUES ('" & Proper(NewData) & "' , '" & NContribuinte & "')"
            DoCmd.RunSQL SQL
            DoEvents
            Response = acDataErrAdded
        Else
            MsgBox "Verifique então o código introduzido, campo obrigatório.", vbCritical, ""
            Exit Sub
        End If

    End Sub

    Abraço
    tauron
    tauron
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  tauron 6/4/2018, 22:01

    AhTeixeira, veja bem, eu preciso que caso o que for digitado no campo cpfcnpjad nao estiver na tabela, eu consiga incluir o contribuinte (ncontribuinte) e o endereco. Resumindo, preencher os tres campos, caso ja exista me retornara o Nome e endereco.
    Anexos
    [Resolvido]Se não estiver na lista AttachmentCadastro.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (84 Kb) Baixado 32 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 16/4/2018, 20:57

    Ola Tauron,

    Teste assim:
    Código:
    Private Sub CPFCNPJAD_NotInList(NewData As String, Response As Integer)
    Dim SQL As String
    Dim NContribuinte As String
    Dim SEndereco As String

        If MsgBox("CPFCNPJAD " & Proper(NewData) & " Não Registado" & vbCrLf & "Deseja Registar o Cliente " & "Agora ?", vbInformation + vbYesNo, "Aviso") = vbYes Then
           
    verificaNC:
            NContribuinte = InputBox("Qual é o Nome do Contribuinte ?", "Contribuinte")
                If DCount("Contribuinte", "tblContribuintes", "Contribuinte = '" & NContribuinte & "'") > 0 Then
                    MsgBox "Ja existe esse nome de contribuinte, verifique.", vbInformation, ""
                    Exit Sub
                End If
    verificaSE:
            SEndereco = InputBox("Qual é o Endereço ?", "Endereco")
           
            'verifica se campos estao vazios
            If Len(NContribuinte & "") = 0 Then
                MsgBox "Nome contribuinte nao pode ser vazio, verifique", vbCritical, ""
                GoTo verificaNC
            End If
            If Len(SEndereco & "") = 0 Then
                MsgBox "O endereco nao pode ser vazio, verifique", vbCritical, ""
                GoTo verificaSE
            End If
           
            SQL = "INSERT INTO tblContribuintes (CPFCNPJ, Contribuinte, Endereco) VALUES ('" & Proper(NewData) & "' , '" & NContribuinte & "' , '" & SEndereco & "')"
            DoCmd.RunSQL SQL
            DoEvents
            Response = acDataErrAdded
        Else
            MsgBox "Verifique então o código introduzido, campo obrigatório.", vbCritical, ""
            Exit Sub
        End If

    End Sub

    Abraco

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 18:32