Página 1 de 1

Impedir dados duplicados com critério

Enviado: Qui Fev 27, 2020 8:39 am
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.

Re: Impedir dados duplicados com critério

Enviado: Qui Fev 27, 2020 3:18 pm
por srobles
Delzor,

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

Re: Impedir dados duplicados com critério

Enviado: Qui Fev 27, 2020 3:49 pm
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.

Re: Impedir dados duplicados com critério

Enviado: Qui Fev 27, 2020 4:37 pm
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).

Re: Impedir dados duplicados com critério

Enviado: Sex Fev 28, 2020 4:56 pm
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