Amigos boa tarde! Tenho um situação que é o seguinte: coloquei um módulo de envio de email num formulário que quando o usuário salva , o sistema envia um email automático de modo oculto para o usuário. Funciona ok, desde que o usuário não feche o form antes do email ser enviado (o que está acontecendo direto). Como faço para bloquear o fechamento do form sem que seja concluído o envio do email. Importante: Não quero abrir outro form (como pop-up) e fechar após rodar o código. Obrigado.
3 participantes
Não fechar forms antes de rodar código
MMS- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 112
Registrado : 12/04/2011
- Mensagem nº1
Não fechar forms antes de rodar código
Assis- Maximo VIP
- Respeito às regras :
Sexo :
Localização :
Mensagens : 4772
Registrado : 06/11/2009
- Mensagem nº2
Re: Não fechar forms antes de rodar código
Boa noite
Não quer colocar aqui o comando para poder-mos analizar ?
Não quer colocar aqui o comando para poder-mos analizar ?
.................................................................................
*** Só sei que nada sei ***
Ney Santos- Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 360
Registrado : 23/05/2011
- Mensagem nº3
Re: Não fechar forms antes de rodar código
Prezado MMS tenho um codigo que tambem faz essa função no meu caso o botão paar envio de email está num For. PopUp
dessa maneira o outro form, onde constam os dados do email não pode ser fechado sem antes o email ser enviado.
Funciona assim: o usuario clica no botão enviar email é aberto um novo form com a propiedade PopUp como True
nesse form tem outro botão comfirmar envio nesse botão sim tenho a função de criar o email..
Abaixo o codigo que uso:
Private Sub Comando45_Click()
Dim Bd As Database
Dim Usuario As Recordset
Set Bd = DBEngine.Workspaces(0).Databases(0)
Set Usuario = Bd.OpenRecordset("Usuario", DB_OPEN_TABLE)
Usuario.Index = "IndiceNumero"
Usuario.Seek "=", 1
Dim BuscaUsuario As Long
If Not Usuario.NoMatch Then
Usuario.Edit
BuscaUsuario = Usuario.[CdUsuario]
Usuario.[pedido] = Forms![Orcamento].[CpNotaFiscal]
End If
Usuario.Update
Dim strstrSaudacao As Variant
If Time() > #6:00:00 PM# Then
strstrSaudacao = "Boa Noite! " & vbCrLf & Forms!Orcamento.Contato & "." & vbCrLf
ElseIf Time() > #12:00:00 PM# And Time < #6:00:00 PM# Then
strstrSaudacao = "Boa Tarde! " & vbCrLf & Forms!Orcamento.Contato & "." & vbCrLf
Else
strstrSaudacao = "Bom Dia! " & vbCrLf & Forms!Orcamento.Contato & "." & vbCrLf
End If
DoCmd.SendObject acReport, "Orçamento", "Rich Text Format (*.pdf)", Forms!Orcamento.Email, , , "Pedido n.º " & Forms!Orcamento.CpNotaFiscal, strstrSaudacao & vbCrLf & "Segue em anexo cópia do pedido descrito no campo assunto dessa mensagem, para sua conferência." & vbCrLf & vbCrLf & vbCrLf & " Atenciosamente " & vbCrLf & vbCrLf & Forms![Menu Principal].Nomeusu & vbCrLf & "Depto de Vendas " & vbCrLf & "Nome da Empresa que esta enviando" & vbCrLf & vbCrLf & " Fone -------------" & vbCrLf & "seu email", True, ""
DoCmd.Close acForm, "Complemento"
DoCmd.OpenForm " Menu Principal"
'--------------------------------------------------------
'Mostra o formulário de envio de email
'--------------------------------------------------------
MsgBox "Mensagem enviada...", vbInformation, "Aviso"
Esse código ja coloca algumas informações no corpo do e-mail..
Tais como uma Saudação, o nome para quem o e-mail está sendo enviado entre outros..
algumas informações soa buscadas no pró pio form que não pode ser fechado, fica a seu critério altera-lo a seu gosto
Espero ter ajudado..
dessa maneira o outro form, onde constam os dados do email não pode ser fechado sem antes o email ser enviado.
Funciona assim: o usuario clica no botão enviar email é aberto um novo form com a propiedade PopUp como True
nesse form tem outro botão comfirmar envio nesse botão sim tenho a função de criar o email..
Abaixo o codigo que uso:
Private Sub Comando45_Click()
Dim Bd As Database
Dim Usuario As Recordset
Set Bd = DBEngine.Workspaces(0).Databases(0)
Set Usuario = Bd.OpenRecordset("Usuario", DB_OPEN_TABLE)
Usuario.Index = "IndiceNumero"
Usuario.Seek "=", 1
Dim BuscaUsuario As Long
If Not Usuario.NoMatch Then
Usuario.Edit
BuscaUsuario = Usuario.[CdUsuario]
Usuario.[pedido] = Forms![Orcamento].[CpNotaFiscal]
End If
Usuario.Update
Dim strstrSaudacao As Variant
If Time() > #6:00:00 PM# Then
strstrSaudacao = "Boa Noite! " & vbCrLf & Forms!Orcamento.Contato & "." & vbCrLf
ElseIf Time() > #12:00:00 PM# And Time < #6:00:00 PM# Then
strstrSaudacao = "Boa Tarde! " & vbCrLf & Forms!Orcamento.Contato & "." & vbCrLf
Else
strstrSaudacao = "Bom Dia! " & vbCrLf & Forms!Orcamento.Contato & "." & vbCrLf
End If
DoCmd.SendObject acReport, "Orçamento", "Rich Text Format (*.pdf)", Forms!Orcamento.Email, , , "Pedido n.º " & Forms!Orcamento.CpNotaFiscal, strstrSaudacao & vbCrLf & "Segue em anexo cópia do pedido descrito no campo assunto dessa mensagem, para sua conferência." & vbCrLf & vbCrLf & vbCrLf & " Atenciosamente " & vbCrLf & vbCrLf & Forms![Menu Principal].Nomeusu & vbCrLf & "Depto de Vendas " & vbCrLf & "Nome da Empresa que esta enviando" & vbCrLf & vbCrLf & " Fone -------------" & vbCrLf & "seu email", True, ""
DoCmd.Close acForm, "Complemento"
DoCmd.OpenForm " Menu Principal"
'--------------------------------------------------------
'Mostra o formulário de envio de email
'--------------------------------------------------------
MsgBox "Mensagem enviada...", vbInformation, "Aviso"
Esse código ja coloca algumas informações no corpo do e-mail..
Tais como uma Saudação, o nome para quem o e-mail está sendo enviado entre outros..
algumas informações soa buscadas no pró pio form que não pode ser fechado, fica a seu critério altera-lo a seu gosto
Espero ter ajudado..