Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Impedir dados duplicados com critério

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Delzor
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Dom Jan 26, 2020 7:34 pm

Impedir dados duplicados com critério

Mensagem por Delzor »

Prezados, bom dia.
Eu estou elaborando uma planilha de controle de pedidos e notas, e dentro da empresa em que trabalho, existem centro de divisões de custos e sub-divisões.

Gostaria que meu list box impedisse a entrada de um dado duplicado para cada centro.

Por exemplo, eu trabalho em uma obra em Campo Grande e os centros são Hidráulica, Elétrica e Pintura.

Se eu já tenho Hidráulica em Campo Grande registrado, gostaria que fosse proibido, mas que esse centro ficasse aberto para outras obras em outras cidades.

E se possível também que fosse de uma forma menos pesada para a planilha, pois como poder ver nos dois últimos códigos da planilha eu possuo um código que impede isso no listbox mas utilizando o If, não queria cair em uma cadeia de comando maior ainda, pois ainda vou dar um upgrade na planilha para inserir mais coisas.

Quem puder dar uma mão aí, agradeço muito.

Segue o link para download da planilha:
https://www.sendspace.com/file/bvzhso

Valeu.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Impedir dados duplicados com critério

Mensagem por srobles »

Delzor,

Tentei baixar o arquivo do link, porém o mesmo apresenta problemas.
Se possível, suba novamente o arquivo ok?


Delzor
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Dom Jan 26, 2020 7:34 pm

Re: Impedir dados duplicados com critério

Mensagem por Delzor »

Olá Saulo, segue o link postado no 4Shared.

https://www.4shared.com/file/WHdee5Aeea ... Obras.html

Não achei no corpo do tópico algum lugar que pudesse fazer um upload local.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Impedir dados duplicados com critério

Mensagem por srobles »

Delzor,

Ao redigir uma mensagem / tópico, abaixo do campo de texto, existe a opção Anexos, ao lado de Opções.
Basta adicionar o arquivo compactado (zipado).


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Impedir dados duplicados com critério

Mensagem por srobles »

Delzor,

Analisando seu modelo, acredito que a informação vital para que a validação dos dados funcione a contento, é o local da obra.

Experimente esta informação em ambas Functions que validam os dados, exemplo :
A function que valida a PEP :

Código: Selecionar todos

Private Function VerificarPEP(nomePEP As String, localOBRA As String) As Boolean ' declara a  função auxiliar para verificar  PEPs repetidos

Dim linRG As Integer ' declara a varíável que irá contar o tanto de linha que existe no listbox
    linRG = ListBoxRg.ListCount ' conta o tanto de linhas que tem na listbox
    
    VerificarPEP = False
    
    For i = 0 To linRG - 1
    
        If UCase(nomePEP) = UCase(ListBoxRg.List(i, 3)) Then
            If UCase(localOBRA) = UCase(ListBoxRg.List(i, 2)) Then
                VerificarPEP = True
                Exit For
            End If
        End If
    Next i
    
End Function
A Function que valida a DESCRIÇÃO :

Código: Selecionar todos

Private Function VerificarDES(nomeDES As String, localOBRA As String) As Boolean ' declara a  função auxiliar para verificar as descrições repetidas

Dim linRG As Integer ' declara a varíável que irá contar o tanto de linha que existe no listbox
    linRG = ListBoxRg.ListCount ' conta o tanto de linhas que tem na listbox
    
    VerificarDES = False
    
    For i = 0 To linRG - 1
    
        If UCase(nomeDES) = UCase(ListBoxRg.List(i, 4)) Then
            If UCase(localOBRA) = UCase(ListBoxRg.List(i, 2)) Then
                VerificarDES = True
                Exit For
            End If
        End If
    Next i
    
End Function
E no botão de cadastro, altere as seguintes linhas :
De :

Código: Selecionar todos

If VerificarPEP(TbRgPEP.Text)=True Then
If VerificarDES(TbRgDes.Text)=True Then
Para :

Código: Selecionar todos

If VerificarPEP(TbRgPEP.Text, TbRgObr) = True Then
If VerificarDES(TbRgDes.Text, TbRgObr) = True Then


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder