Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Impedir dados duplicados com critério
Impedir dados duplicados com critério
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.
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
Delzor,
Tentei baixar o arquivo do link, porém o mesmo apresenta problemas.
Se possível, suba novamente o arquivo ok?
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
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.
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
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).
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
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 :
A Function que valida a DESCRIÇÃO :
E no botão de cadastro, altere as seguintes linhas :
De :
Para :
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
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
De :
Código: Selecionar todos
If VerificarPEP(TbRgPEP.Text)=True Then
If VerificarDES(TbRgDes.Text)=True Then
Código: Selecionar todos
If VerificarPEP(TbRgPEP.Text, TbRgObr) = True Then
If VerificarDES(TbRgDes.Text, TbRgObr) = True Then