Boa noite galera, tudo certo? Ultimamente tenho pedido bastante ajuda aqui, pois em alguns casos não consigo adaptar os códigos e exemplos já existentes em tópicos semelhantes.
Tenho um campo txt (desvinculado) de pesquisa chamado cxaPesquisa e nele coloquei a condição de pesquisar tanto pelo código do produto (que tem 5 dígitos), quanto pelo SKU do produto (que tem 13 dígitos). A pesquisa funciona, inclusive me retorna a mensagem de erro quando digito qualquer número que não tenha 5 ou 13 dígitos. Só que tem um porém, quando eu digito um número de 5 ou 13 dígitos que não esteja cadastrado, ele vai para o novo registro.
Já tentei usar a função: If IsNull(DLookup("[codigoProduto]", "tblProdutos", "[cxaPesquisa]= " & Me.codigoProduto & "")) Then e também tentei usar a condição: If IsNull(Me!skuProduto) Then .. mas não funciona, ele sempre vai para o novo registro.
Eis o código que estou usando no momento e que preciso que, caso o produto não esteja cadastrado, o sistema dê a mensagem de erro.
Private Sub cxaPesquisa_AfterUpdate()
Me.cxaPesquisa.AutoTab = False
If Len(cxaPesquisa.Text) = 5 Then
DoCmd.ApplyFilter , "[codigoProduto] = '" & Me![cxaPesquisa] & "'"
Me.cxaPesquisa = ""
ElseIf Len(cxaPesquisa.Text) = 13 Then
DoCmd.ApplyFilter , "[skuProduto] = '" & Me![cxaPesquisa] & "'"
Me.cxaPesquisa = ""
Else
MsgBox "Código inválido.", vbCritical, "Sispac"
Me.cxaPesquisa = ""
Me.cxaPesquisa.SetFocus
Exit Sub
End If
Exit Sub
End Sub
Tenho um campo txt (desvinculado) de pesquisa chamado cxaPesquisa e nele coloquei a condição de pesquisar tanto pelo código do produto (que tem 5 dígitos), quanto pelo SKU do produto (que tem 13 dígitos). A pesquisa funciona, inclusive me retorna a mensagem de erro quando digito qualquer número que não tenha 5 ou 13 dígitos. Só que tem um porém, quando eu digito um número de 5 ou 13 dígitos que não esteja cadastrado, ele vai para o novo registro.
Já tentei usar a função: If IsNull(DLookup("[codigoProduto]", "tblProdutos", "[cxaPesquisa]= " & Me.codigoProduto & "")) Then e também tentei usar a condição: If IsNull(Me!skuProduto) Then .. mas não funciona, ele sempre vai para o novo registro.
Eis o código que estou usando no momento e que preciso que, caso o produto não esteja cadastrado, o sistema dê a mensagem de erro.
Private Sub cxaPesquisa_AfterUpdate()
Me.cxaPesquisa.AutoTab = False
If Len(cxaPesquisa.Text) = 5 Then
DoCmd.ApplyFilter , "[codigoProduto] = '" & Me![cxaPesquisa] & "'"
Me.cxaPesquisa = ""
ElseIf Len(cxaPesquisa.Text) = 13 Then
DoCmd.ApplyFilter , "[skuProduto] = '" & Me![cxaPesquisa] & "'"
Me.cxaPesquisa = ""
Else
MsgBox "Código inválido.", vbCritical, "Sispac"
Me.cxaPesquisa = ""
Me.cxaPesquisa.SetFocus
Exit Sub
End If
Exit Sub
End Sub
Última edição por Krauss em 25/11/2020, 03:57, editado 1 vez(es)