Pessoal, boa noite. Peço a ajuda de vocês em um dúvida que já deve ter sido tratada poe aqui, mas ainda não consegui localizar. talvez seja uma dúvida simples, mas pela falta de conhecimento me limita.
Tenho um Form Principal contendo dois Subforms (FORM_SUB_OC_ENTNF) e (FRM_SUB_ENTNF), em modo folha de dados.
No form Principal, tenho os códigos para exclusão do registro no botão excluir. Porém eu gostaria de fazer a exclusão de acordo com alguns critérios dos subforms para cada produto que nele conste.
Por exemplo: Se no Subform A o Status for Concluído (para todos os produtos) e no Subform B o Status for Entrada (para todos os produtos), então apaga tudo e volta a contabilidade. Tendo um em mãos, desenvolvo as demais condições.
A dúvida é, como percorrer e verificar todos os campos status dos dois Subforms, atendem a condição e assim rodar o código?
Desde já agradeço a ajuda.
Segue o código que utilizo para fazer a exclusão desenvolvido parte pelo Fabio Paes no qual implementei algumas alterações de acordo com minha necessidade.
Tenho um Form Principal contendo dois Subforms (FORM_SUB_OC_ENTNF) e (FRM_SUB_ENTNF), em modo folha de dados.
No form Principal, tenho os códigos para exclusão do registro no botão excluir. Porém eu gostaria de fazer a exclusão de acordo com alguns critérios dos subforms para cada produto que nele conste.
Por exemplo: Se no Subform A o Status for Concluído (para todos os produtos) e no Subform B o Status for Entrada (para todos os produtos), então apaga tudo e volta a contabilidade. Tendo um em mãos, desenvolvo as demais condições.
A dúvida é, como percorrer e verificar todos os campos status dos dois Subforms, atendem a condição e assim rodar o código?
Desde já agradeço a ajuda.
Segue o código que utilizo para fazer a exclusão desenvolvido parte pelo Fabio Paes no qual implementei algumas alterações de acordo com minha necessidade.
- Código:
'Criado por Fabio Paes
' Em 25/07/2017
'On Error GoTo trataerro
If MsgBox("DESEJA DAR ENTRADA EM TODA NF?", vbQuestion + vbYesNo, "CONFIRMAÇÃO") = vbYes Then
'DoCmd.RunCommand acCmdSaveRecord 'Salvo o Registro antes de começar a selecionar os dados
Dim DB As Database 'Declaro as variaveis utilizadas no codigo
Dim RSO, RSD, rsD2 As DAO.Recordset 'Variavel rsO=Fara a consulta dos produtos lançados na NF (Origem)
'rsD=Fara a consulta do produto a ser adicionado o Estoque
'rsD2=Fara a consulta do produto a ser DIMINUIDO a qnt da OC
Set DB = CurrentDb() 'defino que irei mecher no BD atual
'Realizo a consulta e trago todos os produtos lançados na NF em questão
Set RSO = DB.OpenRecordset("SELECT * FROM DETALHES_ENTRADA_NF WHERE Codcont = " & Me.txt_IdIntControle & "")
Do While Not RSO.EOF 'Repetirei tudo a partir daqui
'Faço a consulta e pego SOMENTE o produto em questão para adidionar o estoque
Set RSD = DB.OpenRecordset("SELECT * FROM PRODUTOS WHERE CodPrd = '" & RSO!CodPrd & "'")
'Faço a consulta e pego SOMENTE o produto em questão para diminuir a quantidade da OC
Set rsD2 = DB.OpenRecordset("SELECT * FROM DETALHES_DA_OC WHERE NumOC = '" & Me.NumOC & "' AND CodPrd = '" & RSO!CodPrd & "'")
'Diminui a quantidade Pendente da OC
'Set RSD3 = DB.OpenRecordset("SELECT * FROM ODEM_DE_COMPRA WHERE NumOC = '" & Me.NumOC & "'")
rsD2.Edit
If RSO!Quantidade = 0 Then
MsgBox " EXISTEM PRODUTOS COM QUANTIDADE 0. VERIFIQUE!", vbInformation, "INFORMAÇÃO DO SISTEMA"
DoCmd.CancelEvent
End
Else
rsD2!QtdePendente = rsD2!QtdePendente - RSO!Quantidade
rsD2.Update
End If
Select Case Me.Deposito.Column(1)
Case "D001"
'Acrescenta a quantidade de cada produto ao estoque
RSD.Edit
RSD!EmEstoqueD001 = RSD!EmEstoqueD001 + RSO!Quantidade
RSD.Update
Case "D002"
RSD.Edit
RSD!EmEstoqueD002 = RSD!EmEstoqueD002 + RSO!Quantidade
RSD.Update
Case "D003"
RSD.Edit
RSD!EmEstoqueD003 = RSD!EmEstoqueD003 + RSO!Quantidade
RSD.Update
Case "D004"
RSD.Edit
RSD!EmEstoqueD004 = RSD!EmEstoqueD002 + RSO!Quantidade
RSD.Update
End Select
Select Case rsD2!QtdePendente
Case Is = 0
rsD2.Edit
rsD2!Status = "CONCLUIDO"
rsD2.Update
End Select
RSO.Edit
RSO!Status = "ENTRADA"
RSO.Update
'RSD3.Edit
'RSD3!Valor_Restante = Me.TXT_VALOR_PENDENTE
'RSD3.Update
RSO.MoveNext 'Movo para proximo registro para Iniciar a Atualização do Novo produto...
Loop 'Fim da alteração e Inicio da nova repetição para o Novo produto
'Fecha as Conexoes abertas
Set DB = Nothing
Set RSO = Nothing
Set RSD = Nothing
Set rsD2 = Nothing
'Set RSD3 = Nothing
DoCmd.RunCommand acCmdSaveRecord
MsgBox "ENTRADA EFETUADA COM SUCESSO E ITENS BAIXADOS DA OC.", vbInformation, "INFORMAÇÃO DO SISTEMA"