Public Sub Comando42_Click()
'Caixa de mensagem
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Este procedimento lançar? os números nas Guias de Remessa." & vbCrLf & "Antes de executar este procedimento ? necessário executar o comando n? 6. Lan?ar GU e endere?o de DESTINO." & vbCrLf & " Deseja realmente continuar?"
Style = vbOKCancel + vbExclamation + vbDefaultButton1
Title = "Lançar os números nas GR!"
Help = "DEMO.HLP"
Ctxt = 1000
Dim campo_1, campo_2 As String
Dim estoque_1, estoque_2, cont As Integer
Dim Data, strSQL As String
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Set dbs = CurrentDb
'Set rst = dbs.OpenRecordset("Tbl_expedicao")
Set rst = dbs.OpenRecordset("Expedir")
Set rst = dbs.OpenRecordset("Tbl_Expedicao_Consulta")
DoCmd.OpenQuery "Tbl_Expedicao_Consulta", acViewPreview
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbOK Then ' O usuário escolheu OK.
MyString = "Ok" ' A resposta foi OK.
DoCmd.Hourglass -1
Data = Format(Now(), "yyyymmdd") ' & "." 'captura e formata a data atual
'monta a consulta para deletar todos os dados da tabela Expedir
DoCmd.SetWarnings False
strSQL = "DELETE * FROM Expedir"
DoCmd.RunSQL strSQL 'executa a exclusão dos dados antigos (zerar os dados da tabela auxiliar)
'monta a consulta para inserir os dados da tabela Expedir
strSQL = "INSERT INTO Expedir ( GU, ContarDeGU ) " & "SELECT GU, ContarDeGU FROM Tbl_Expedicao_Consulta;"
DoCmd.RunSQL strSQL
'fechar a consulta
DoCmd.Close acQuery, "Tbl_Expedicao_Consulta"
'monta a consulta atualização
strSQL = "UPDATE Tbl_OM_Destino INNER JOIN (Expedir INNER JOIN Tbl_Expedicao ON Expedir.GU = Tbl_Expedicao.GU) ON Tbl_OM_Destino.Codom = Tbl_Expedicao.Codom SET Tbl_Expedicao.Estoque = True WHERE ((([Expedir]![ContarDeGU])>=[Qnt_Exp]) AND ((Tbl_Expedicao.Codom)<>'') AND ((Tbl_Expedicao.Expedida)=False)) OR (((DateDiff('d',[Data_BE],Date()))>59));"
DoCmd.RunSQL strSQL 'executa a consulta atualização
'fechar a consulta
DoCmd.Close acTable, "Tbl_Expedicao_Consulta"
'Novo
Me.Filter = "tbl_Expedicao.Expedida=False and tbl_Expedicao.OM<>''" 'Filtro para verificar se não está expedida e o nome da OM não está em branco
Me.FilterOn = True 'aplica o filtro
Me.OrderBy = "RM,GU,Estoque" 'ordena os registros nesta sequência
Me.OrderByOn = True 'aplica a ordenação
campo_1 = "" 'zera a variável 1
campo_2 = "" 'zera a variável 2
estoque_1 = ""
DoCmd.GoToControl "Codom"
campo_1 = Me.GU
campo_2 = Me.GU
'DoCmd.GoToControl "Estoque"
estoque_1 = Me.Estoque
estoque_2 = Me.Estoque
Do
Recordset.MoveNext
On Error GoTo Segunda_parte 'Final_Processo 'Exibe a mensagem de final
campo_2 = Me.GU
estoque_2 = Me.Estoque
If estoque_1 = True And campo_2 = campo_1 Then
If estoque_2 = False Then
Me.Estoque = True
End If
Else
campo_1 = campo_2
estoque_1 = estoque_2
End If
Loop Until rst.EOF
'Novo
Segunda_parte:
Me.Filter = "tbl_Expedicao.Expedida=False and tbl_Expedicao.OM<>'' and tbl_Expedicao.Estoque=True" 'string do filtro a aplicar
Me.FilterOn = True 'aplica o filtro
Me.OrderBy = "RM,GU,OM" 'ordena os registros
Me.OrderByOn = True 'aplica a ordena??o
cont = 1 'inicia o contador
campo_1 = "" 'zera a variável 1
campo_2 = "" 'zera a variável 2
DoCmd.GoToControl "Codom"
Me.GR = Data & Format(cont, "000")
campo_1 = Me.Codom
campo_2 = Me.Codom
Do Until rst.EOF
Recordset.MoveNext
On Error GoTo Final_Processo 'Exibe a mensagem de final
campo_2 = Me.Codom
If campo_2 = campo_1 Then
Me.GR = CDbl(Data) & Format(cont, "000")
Else
cont = cont + 1
Me.GR = CDbl(Data) & Format(cont, "000")
campo_1 = campo_2
End If
Loop
Final_Processo:
MsgBox "Processo concluído com sucesso!!!!" 'Exibe a mensagem e encerra a aplicação.
DoCmd.Hourglass 0
Else 'Usou a opção Cancelar.
MyString = "Cancel" ' Executa o cancelamento.
DoCmd.Close
DoCmd.SetWarnings True
End If
End Sub