Olá senhores!
Gostaria de pedir vossa ajuda para automatizar o seguinte código:
Nele, como podem ver, possuo alguns campos para verificar se o mesmo produto foi lançado mais de uma vez no mesmo registro do form de Vendas (que possui o subform com as devidas linhas de cada produto).
Este código já me atende 100%, mas como tenho outros forms em que tenho que usar a mesma função, queria deixar isso em uma Sub pública dentro de um módulo, apenas chamando ela, assim, acredito eu, seria mais fácil caso precisasse fazer uma manutenção que fosse válida para todos os forms, bem como economizo linhas de código e deixa mais limpo.
Para fazer isso acontecer direito, acredito que seja necessário apenas substituir os lugares que possuem nome de campo (ex: "dtpV_Produto") e controles (ex: Me.dtpV_Produto).
Infelizmente não tive sucesso ainda. Segue o código como está na sub do módulo:
Para chamar essa sub usei, no evento antes de atualizar do subform (estava funcionando normal aqui com o código antigo): Call ImpedeDuplicidade("frmVenda_tp_subf", "dtpV_Produto", "dtpV_Cod")
O erro acontece logo na linha de "Set frm = ....."
Nome do subform está correto!
O que eu tenho que corrigir para que o VBA entenda direito o caminho do subform e os devidos campos?
Gostaria de pedir vossa ajuda para automatizar o seguinte código:
- Código:
''Verificamos se há duplicidade de produto na mesma tabela de preço.
'Dim frm As Recordset
'
'Set frm = Me.RecordsetClone
'With frm
' .FindFirst "dtpV_Produto=" & Me.dtpV_Produto & " And NOT dtpV_Cod=" & Me.dtpV_Cod & ""
' If Not .NoMatch Then
' MsgBox "Já existe um lançamento com este produto." _
' & Chr(10) & Chr(10) & " Por gentileza, altere o lançamento existente!", vbOKOnly, "Atenção!"
' Cancel = True
' Me.Undo
' End If
'End With
'Set frm = Nothing
Nele, como podem ver, possuo alguns campos para verificar se o mesmo produto foi lançado mais de uma vez no mesmo registro do form de Vendas (que possui o subform com as devidas linhas de cada produto).
Este código já me atende 100%, mas como tenho outros forms em que tenho que usar a mesma função, queria deixar isso em uma Sub pública dentro de um módulo, apenas chamando ela, assim, acredito eu, seria mais fácil caso precisasse fazer uma manutenção que fosse válida para todos os forms, bem como economizo linhas de código e deixa mais limpo.
Para fazer isso acontecer direito, acredito que seja necessário apenas substituir os lugares que possuem nome de campo (ex: "dtpV_Produto") e controles (ex: Me.dtpV_Produto).
Infelizmente não tive sucesso ainda. Segue o código como está na sub do módulo:
- Código:
Public Sub ImpedeDuplicidade(SubfAtual As String, cProduto As String, cCod As String)
'Verificamos se há duplicidade de produto no mesmo subform.
Dim frm As Recordset
Set frm = Forms(SubfAtual).RecordsetClone
With frm
.FindFirst cProduto & "=" & Forms(SubfAtual)(cProduto) & " And NOT " & cCod & "=" & Forms(SubfAtual)(cCod) & ""
If Not .NoMatch Then
MsgBox "Já existe um lançamento com este produto." _
& Chr(10) & Chr(10) & " Por gentileza, altere o lançamento existente!", vbOKOnly, "Atenção!"
'Cancel = True
Forms(SubfAtual).Undo
End If
End With
Set frm = Nothing
End Sub
Para chamar essa sub usei, no evento antes de atualizar do subform (estava funcionando normal aqui com o código antigo): Call ImpedeDuplicidade("frmVenda_tp_subf", "dtpV_Produto", "dtpV_Cod")
O erro acontece logo na linha de "Set frm = ....."
Nome do subform está correto!
O que eu tenho que corrigir para que o VBA entenda direito o caminho do subform e os devidos campos?