Bonjour,
Dans le but d'envoyer diverse mise à jour par mail, je cherche à saisir certains champs d'un enregistrement pour les mettre dans un mail sans mis en forme particulière (retour à la ligne + "intitulé:"). Cette action ne me pose pas de problème.
Cependant, les données apparaissant dans mon mail ne sont pas les bonnes.
Tentative d'explication:
Pour la sauvegarde, j'ai positionné des flags pour savoir si un champ avait changé comme ceci:
Code :
1 2 3 4 5
| Private Sub Fct_Dirty(Cancel As Integer)
bModif = True
End Sub
etc.... |
Voulant sauvegarder l'enregistrement existant, je me positionne donc dans le BeforeUpdate de mon formulaire afin de ne pas Archiver l'enregistrement fraichement modifié mais celui "avant modifications":
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Private Sub Form_BeforeUpdate(Cancel As Integer)
On Error GoTo err
Dim StrSQL As String
SstrSQL = Id.Value
MsgBox SstrSQL
StrSQL = "INSERT INTO T_Historique ( ..., Fct, ... ) " & _
" SELECT ..., T_Gestion.Fct, ... " & _
" FROM T_Gestion" & _
" WHERE ((T_Gestion.Id)= " & Id.Value & ");"
If bModif = True Then
DoCmd.RunSQL StrSQL
End If
err:
End Sub |
Le mail, quant à lui doit contenir les nouvelles informations concernant mon enregistrement. Actuellement j'utilise cette structure qui ne fonctionne pas
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13
| Private Sub Form_AfterUpdate()
Dim Reponse
If bModif = True Then
Reponse = MsgBox("Voulez-vous prévenir vos contacts de ce changement ?", vbYesNo, "Contact")
If Reponse = vbYes Then
DoCmd.OpenForm "frmMail"
Form_frmMail.cmbDestinataires.SetFocus
End If
End If
bModif = False
End Sub |
Je n'arrive pas à récupérer correctement mes informations:
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| Private Sub btnSendMail_Click()
' On Error GoTo err
MsgBox Form_sfrmGestion.SstrSQL
Dim Sujet As String
Dim Corps As String
Sujet = "Mise à jour"
Corps = "Bonjour,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "N° de série: " & Form_sfrmGestion.N_Serie &
Corps = Corps & Chr(13) & Chr(10)
If Me.chkFct Then
Corps = Corps & "Fonction: " & "Docmd.RunSQL SELECT T_Gestion.Fct FROM T_Gestion WHERE ((T_Gestion.Id)= " & Form_sfrmGestion.SstrSQL & ");"
Corps = Corps & Chr(13) & Chr(10)
End If
'MsgBox Corps
If Me.chkMailNumES Then
Corps = Corps & "Numéro ES: "
Corps = Corps & Chr(13) & Chr(10)
End If
If Me.chkMailEmplacement Then
Corps = Corps & "Emplacement: " & Form_sfrmGestion.Emplacement.Value
Corps = Corps & Chr(13) & Chr(10)
End If
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Cordialement,"
Call CreateEmail(Sujet, Corps)
err:
' 'Affiche un message suivant l'erreur
Select Case err.Number
Case 94: MsgBox "Veuillez remplir tous les champs"
End Select
End Sub |
La requête est un test, je me doute bien qu'elle n'affiche pas le résultat directement
La fonction mail ne pose aucun soucis, aucun soucis d'envoie, juste de saisie de données. Avec mon code, ça m'envoie des données mais celles se trouvant dans l'enregistrement qui "prend" le focus, pas les informations de l'enregistrement modifé
Merci par avance