IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Problème de syntaxe requete SQL/Formulaire/Sous formulaire [AC-2013]


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Problème de syntaxe requete SQL/Formulaire/Sous formulaire
    Bonjour,
    J'ai un formulaire [Projet] et un sous formulaire [Sous-Formulaire], une table [Agents] avec un champ [email] que je voudrais récupérer,
    à partir d' un évènement d'un contrôle du sous formulaire. Le lien entre [Projet] et [Sous-formalaire] se fait sur le champ Père-Fils [Num_projet].
    je dois donc récupérer le [Chef de Projet] qui se trouve and le Formualire [PROJET] pour le lier avec le champ [AGEN] de ma table [Agents], sachant que le déclencheur est un contrôle d'un champ de [Sous-formalaire] .
    Mais la requête ne me ramène aucune valeur , si quelqu'un pouvait checker ma syntaxe!
    Merci beaucoup
    ALEXM

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     strSQL = "SELECT [Email] FROM [Agents]" _
    & " WHERE  [Formulaires]![Projet]![Num_Projet] = [Formulaires]![Sous-Formulaire]![Num_Projet] and [Agent] ='" & [Formulaires]![Projet]![Chef de Projet] & "'"
     
     
     
     
    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    je dois donc rédupérer le [Chef de Projet] qui se trouve and le Formualire [PROJET] pour le lier avec le champ [AGEN] de ma table [Agents], sachant que le déclencheur est un contrôle d'un champ de [Sous-formalaire] .
    j'ai à peu près décrypté ton texte
    Il est préférable de mettre les variables faisant référence au champs des formulaires en dehors des délimiteurs de texte du SQL, et utiliser Forms plutôt que Formulaires, de ce fait:
    Si l'évènement qui déclenche le code est dans le sous-formulaire, il faut remplacer son nom par Me et le nom du formulaire principal sera remplacé par Parent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strSQL = "SELECT [Email] FROM [Agents]" _
    & " WHERE [Agent] ='" & [Parent]![Chef de Projet] & "'"
    par contre, je ne vois pas ce qui sera filtré dans la table Agents avec la comparaison ci-dessous puisque aucun champ de la table n'est concerné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Formulaires]![Projet]![Num_Projet] = [Formulaires]![Sous-Formulaire]![Num_Projet]
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Suite de notre affaire
    Bonjour Tee_grandbois,

    je voulais vous remercier pour toute votre assistance.
    Le fait d'utiliser [Parent] , cela marche très bien, mais je ne sais comment vous avez pu trouver cela !
    Par contre dans le texte du message que j'envoie par mail le paramètre [Me] ne fonctionne pas.
    Peut être parce que il y a plusieurs occurrences "actions" pour un projet ? Mais même en ajoutant [Me].[Nom_Action].CurrentRecord, cela ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Body = "Bonjour, " & Chr(13) & " L'action  : " & [Me].[Nom_Action] & " du projet :  " & [Parent].[Nom du Projet] & " du département : " & [Parent].[Departement_DIR].....
    Autrement je me contente dans ce message de n('utiliser que les références à [Parent].
    Concernant votre question : par contre, je ne vois pas ce qui sera filtré dans la table Agents avec la comparaison ci-dessous puisque aucun champ de la table n'est concerné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Formulaires]![Projet]![Num_Projet] = [Formulaires]![Sous-Formulaire]![Num_Projet]
    Je voulais lier le Formulaire au sous Formulaire sur le numéro du projet (Champ Père-fils) avant que vous ne m'éclairiez sur la possibilité du formulaire " [Parent]".

    Merci beaucoup !

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Le fait d'utiliser [Parent] , cela marche très bien, mais je ne sais comment vous avez pu trouver cela !
    la lecture assidue de l'aide en ligne Microsoft depuis 30 ans (touche F1 ou ? sur toute fonction, objet, commande, fenêtre, etc. d'Access) et puis aussi la pratique, quand même
    Par contre dans le texte du message que j'envoie par mail le paramètre [Me] ne fonctionne pas.
    Peut être parce que il y a plusieurs occurrences "actions" pour un projet ? Mais même en ajoutant [Me].[Nom_Action].CurrentRecord , cela ne fonctionne pas.
    Me fait référence au sous-formulaire qui peut avoir plusieurs enregistrements Me.CurrentRecord indique le numéro d'enregistrement relatif (donc le jeu d'enregistrement filtré par champs pères/champs fils) où le curseur est positionné et ne peut pas être utilisé comme propriété d'un champ.
    Il faudrait que j'en sache plus sur le champ [Nom_Action]: faut-il utiliser celui du dernier enregistrement?
    dans ce cas, pour se positionner sur le dernier il faudrait ajouter ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim oRst as RecordsetClone
    Dim strNomAction as string
    oRst.movelast
    if Not orst.EOF then strNomAction = orst("NomAction")
     
    '.... ensuite utiliser la variable à la place du contrôle du formulaire
    .Body = "Bonjour, " & Chr(13) & " L'action : " & strNomAction & " du projet : " & [Parent].[Nom du Projet] & " du département : " & [Parent].[Departement_DIR].....
     
    '....
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Suite de notre affaire
    Bonjour tee_grandbois,

    Merci pour ta réponse.
    En fait dans mon application gestion de projets j'ai un formulaire [Projet] et un sous formulaire fils [Actions] . Dans chaque action il y a un "Statut" : En cours, Clos, Annulé.
    L'idée était d'envoyer au chef de projet [Parent] que telle [Action] (nom de l'action) a son statut qui a évolué. par exemple passé de "En cours" à "Clos".
    Comme en fonction des projets il peu y avoir plus d'une centaine d'actions, et plusieurs collaborateurs peuvent intervenir sur une action, il aurait été commode de prévenir le [Chef de Projet] du [Parent], de quelle action il s'agit.
    Le déclenchement se fait sur MAJ du statut de l'action du sous formulaire, d'où l'idée de récupérer le nom de l'action Courante.
    Si ce n'est pas possible ce n'est pas grave, dans le message Mail, on ne précisera pas le nom de l'action.
    Déjà quand on ajoute une action je fais partir un message "Une nouvelle action a été ajoutée au projet [Parent].....

    Merci beaucoup !

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Le déclenchement se fait sur MAJ du statut de l'action du sous formulaire, d'où l'idée de récupérer le nom de l'action Courante.
    dans ce cas, 2 solutions :
    - déclencher l'envoi du mail après MAJ de l'action, avec un message ("Voulez-vous envoyer un mail ...") de confirmation avant l'envoi (ou pas)
    - si tu gardes l'option bouton, mon dernier code devrait fonctionner puisque qu'il va se positionner sur le dernier enregistrement qui doit être le dernier saisi (sauf si c'est classé par ordre décroissant de date, dans ce cas, c'est le premier)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Suite , puis une deuxième petite question
    Merci pour ta réponse,

    1 - En fait si on crée une nouvelle "action", je requête va le faire car ce sera forcément le dernier enregistrement (en Mode Feuille de données)
    Donc on peut récupérer le nom de l'action dans le HTMLBODY du mail.
    Par contre pour la mise à jour du statut de l'action, n'importe quelle action de la liste peut être modifiée , cette action devient à ce moment l' Action courante.
    Et ça je ne vois pas de solution pour ndiquer dans le Mail , "Le statut de l'action "xxxxx" du Projet [Parent] a été modifiée.
    Si ce n'est pas possible pour ce cas, je m'en contenterai !

    Nom : Image_actions.png
Affichages : 197
Taille : 63,9 Ko

    2 - il y aurait un moyen de mettre dans le sous formulaire [Actions] une scroll barre verticale pour ce déplacer dans ce Sous formulaire en Mode Feuille de données.
    j'ai un Projet qui a 157 actions c'est pas évident de naviguer, et en mode utilisateur je désactive les barres de défilement;
    Si tu as un vis , je suis preneur.
    A au fait ta Progress Barr a fait fureur chez les utilisateurs : Merci beaucoup !

    Merci beaucoup et bonne soirée !
    ALEXM

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    2 - il y aurait un moyen de mettre dans le sous formulaire [Actions] une scroll barre verticale pour ce déplacer dans ce Sous formulaire en Mode Feuille de données.
    j'ai un Projet qui a 157 actions c'est pas évident de naviguer, et en mode utilisateur je désactive les barres de défilement;
    Si tu as un vis , je suis preneur.
    ... tu veux les barres de défilement verticale tout en les désactivant ?
    De toute façon, en mode feuille de données elles apparaissent automatiquement lorsque la fenêtre n'es pas assez grande pour tous les enregistrements.
    Donc je ne vois pas trop où est le problème ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Suite...
    Bonsoir !

    Je vous écris de chez moi, concernant la barre de défilement verticale pour mon sous-formulaire :
    Dans cette configuration je n'ai bloqué aucune barre de défilement, mais pour mon sous formulaire qui dans le cas présent contient 157 actions, je n'ai aucune barre de défilement ou de navigation verticale, ce qui me pose problème : Au moins "dernier", et "nouveau".....
    Si par la suite j'autorise les barres de défilement c'est un joyeux mélange entre la barre de défilement des formulaires [Projet] et des des sous projets [Action]...
    Si vous avez une idée : Défilement des formulaires projets avec les boutons suivants, précedents... : c'est fait par contre pour le sous formulaire en mode feuille de données...? défilement vertical "ergonomique" ? Si vous avez une idée ?

    Merci et BonsoirNom : Image1.png
Affichages : 188
Taille : 169,8 Ko

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    c'est parce que le sous-formulaire est mal ajusté, du coup on ne la voit pas car cachée par la partie droite du formulaire principal, il faut agrandir la largeur du sous-formulaire
    D'ailleurs, si tu utilises la barre de défilement horizontale, tu devrais voir la verticale apparaitre.

    Astuce: pour gagner de la place en mode utilisateur, tu peux masquer la fenêtre base

    Tu peux également masquer la barre de défilement verticale du formulaire principal qui ne semble pas servir
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bon, finalement en agrandissant ton image un maximum, je m'aperçois effectivement qu'il n'y a pas de barre de défilement, c'est très étrange ...
    peux-tu faire une impression d'écran en mode création ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Suit de nos 2 affaires
    Bonjour,
    Je réponds un peu tard. Voilà ce que j'ai fait pour gagner en lisibilité , mais c'est un peu frustrant.
    je garde la barre de défilement verticale sur les formulaires et je n'affiche que la barre de défilement horizontale pour le sous formulaire.
    Cela implique que je dois systématiquement cliquer sur la Barre de défilement verticale du Formulaire principal [Projet] jusqu'en bas pour visualiser la barre de défilement horizontale de mon sous formulaire :
    c'est quand même commode de pour naviguer des las cations du sous formulaire surtout quand il y an plus de 100.
    Nom : Copie_ecran_avec barre de défilement.png
Affichages : 186
Taille : 133,3 Ko

    2 -Pour le point 2 de l'envoi d'un Mail quand le Statut de l'action du sous formulaire a été modifiée :
    J'ai du rater quelque chose, j'ai erreur de compilation :
    Nom : Erreurcompil1.png
Affichages : 185
Taille : 93,5 Ko, Nom : Erreurcompil3.png
Affichages : 179
Taille : 4,9 Ko
    je renvoie le code en cas de besoin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Private Sub Statut_AfterUpdate()
    Dim oRst As RecordsetClone
    Dim strNomAction As String
    oRst.MoveLast
    If Not oRst.EOF Then strNomAction = oRst("Nom_Action")
     
     
    Dim rst As DAO.Recordset
    Dim strSQL As String
    Dim test As String
    Dim OL As Object
     Dim OLmail As Object
      On Error Resume Next
      Set OLk_Appli = GetObject("Outlook.Application")
      If OLk_Appli Is Nothing Then
      '  mettre le bon chemin outlook
        OLk_OK = Shell("C:\Program Files (x86)\Microsoft Office\Office15\outlook.exe", 1)
      End If
     
      Set OL = CreateObject("Outlook.Application")
      Set OLmail = OL.CreateItem(0)
     
        With OLmail
     
      strSQL = "SELECT [Email] FROM [Agents]" _
    & " WHERE   [Agent] ='" & [Parent]![Chef de Projet] & "'"
    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
            .TO = rst("[Email]")
             If .TO = "" Then
            MsgBox "Pas de mail enregistré pour ce chef de Projet !", 16
            Exit Sub
            End If
           .Subject = "7_test_envoi_Mail Access à " & [Parent].[Chef de Projet]
            .HtmlBody = "Bonjour," & "<br />" & "Le statut d'une action" & strNomAction & " du projet a étémodifiée à votre projet : " & "<u>" & "<b>" & [Parent].[Nom du Projet] & "</u>" & "</b>"
           e ""
           .Send
           End With
     
        Set OLmail = Nothing
        Set OL = Nothing
        Set OLk_Appli = Nothing
         MsgBox "Un Mail a été envoyé pour indiquer le changement de statut du projet à  : " & [Parent].[Chef de Projet], vbInformation, "VidéoClub"
    End Sub
    Bonne journée !
    ALEXM

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Dim oRst as RecordsetClone oups! désolé pour l'erreur, j'ai un peu abrégé les instructions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim orst As Recordset
    Set orst = Me.RecordsetClone
    PS:
    il manque un espace après action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .HtmlBody = "Bonjour," & "<br />" & "Le statut d'une action " & strNomAction &
    re-PS: pour le balisage du code, il ne suffit pas de saisir le caractère # en début et fin de code mais bien d'appuyer sur le bouton # du menu "Votre message":

    Nom : _1.JPG
Affichages : 184
Taille : 109,2 Ko
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  14. #14
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    CORRECTION:
    il faut supprimer ce code puisque l'envoi de mail se fait sur mise à jour de Statut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim oRst As RecordsetClone
    Dim strNomAction As String
    oRst.MoveLast
    If Not oRst.EOF Then strNomAction = oRst("Nom_Action")
    et remettre l'ancien code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .HtmlBody = "Bonjour," & "<br />" & "Le statut d'une action " & [Me].[Nom_Action] & ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Suite de notre affaire
    Bonsoir tee_grandbois !
    Merci de toute votre aide !
    J'ai fait le point : Sur l'ajout d'une action avec le "strNomAction" cela marche parfaitement ! Je vous en remercie beaucoup.
    Par contre sur le changement du statut d'une action dans le sous formulaire : Access ne reconnait pas le [Me].[Nom_action], il ne trouve pas le "curent record".
    C'était la question que j'avais posé au début de cette discussion.
    Ce n'est pas grave dans le fond j'envoie un mail un peu générique : "Bonjour, Le statut d'une action du projet :
    ACTUALISATION RENOVEE Num: Proj_15, a été modifié" .
    Si pas de solution on en reste là vous m'avez beaucoup aidé !
    Si le problème d'affichage du formulaire/sous formulaire (l'autre question) pas de possibilité de faire autrement , on peut en rester là également, ce n'est pas très grave non plus.
    Vous me dîtes, je passe en "Résolu" la question.
    Merci encore pour toute l'aide que vous m'apportez.
    Bonne soirée.
    Je vous laisse mon code modifié à tout hasard : pour l'événement ajout d'enregistrement action et modification du statut action :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    45
    46
    47
    48
    49
    50
    51
    52
     
    Private Sub Form_AfterInsert()
     
    If MsgBox("Bonjour,voulez vous prévenir le Chef de Projet qu'una action a été ajoutée au Projet?", vbQuestion + vbYesNo) = vbNo Then
    Exit Sub
    Else
    Dim orst As Recordset
     
     
    Set orst = Me.RecordsetClone
    Dim strNomAction As String
    orst.MoveLast
    If Not orst.EOF Then strNomAction = orst("Nom_Action")
    Dim rst As DAO.Recordset
    Dim strSQL As String
    Dim OL As Object
     Dim OLmail As Object
      On Error Resume Next
      Set OLk_Appli = GetObject("Outlook.Application")
      If OLk_Appli Is Nothing Then
      '  mettre le bon chemin outlook
        OLk_OK = Shell("C:\Program Files (x86)\Microsoft Office\Office15\outlook.exe", 1)
      End If
     
      Set OL = CreateObject("Outlook.Application")
      Set OLmail = OL.CreateItem(0)
     
        With OLmail
      ' MsgBox "Voulez vous envouyer  "
      strSQL = "SELECT [Email] FROM [Agents]" _
    & " WHERE   [Agent] ='" & [Parent]![Chef de Projet] & "'"
    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
            .TO = rst("[Email]")
             If .TO = "" Then
            MsgBox "Pas de mail enregistré pour ce chef de Projet !", 16
            Exit Sub
            End If
          .HtmlBody = "Bonjour," & "<br />" & "Une nouvelle action " & strNomAction & " a été ajoutée à votre projet : " & "<u>" & "<b>" & [Parent].[Nom du Projet] & "</u>" & "</b>"
           .Subject = "Test_envoi_Mail Access lors de l'ajout d'une nouvelle action dans le projet  " & [Parent].[Chef de Projet]
          '  .Body = "Bonjour, une nouvelle action a été rajouttée à votre projet " & Chr(13) & " L'action  : " & [Me].[Nom_Action].[CurrentRecord] & " du projet :  " & [Parent].[Nom du Projet] & " du département : " & [Parent].[Departement_DIR] & " a été modifiée, le statut est passé au statut :  " & Me.[Statut] & ""
           '.Body = "Bonjour, " & Chr(13) & " L'action : " & [Me].[Action] ' & " du projet :  " & [Parent].[Nom du Projet]  & " du département : " & [Parent].[Departement_DIR] & " a été modifiée, le statut est passé au statut :  " & Me.[Statut].Column(1) & ""
           .Send
        End With
     
        Set OLmail = Nothing
        Set OL = Nothing
        Set OLk_Appli = Nothing
        ' MsgBox "Un Mail a été envoyé pour indiquer le changement de statut du projet à  : " & [Parent].[Chef de Projet], vbInformation, ""
    FormattedMsgBox "Un Mail a été envoyé à :  " & [Parent].[Chef de Projet] & "@ pour indiquer l'ajout de la nouvelle action : @[" & strNomAction & "]  du projet " & [Parent].[Nom du Projet], _
                vbOKOnly + vbExclamation, "My Application"
                End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    Private Sub Form_Dirty(Cancel As Integer)
    Me.[Derniere_Date_MAJ] = Now
    End Sub
     
    Private Sub Statut_AfterUpdate()
    If MsgBox("Bonjour,voulez vous prévenir le Chef de Projet que le statut de l'action a été modifié?", vbQuestion + vbYesNo) = vbNo Then
    Exit Sub
    Else
    Dim orst As Recordset
    Set orst = Me.RecordsetClone
    Dim strNomAction As String
    orst.MoveLast
    If Not orst.EOF Then strNomAction = orst("Nom_Action")
     Dim rst As DAO.Recordset
    Dim strSQL As String
    Dim test As String
    Dim OL As Object
     Dim OLmail As Object
      On Error Resume Next
      Set OLk_Appli = GetObject("Outlook.Application")
      If OLk_Appli Is Nothing Then
      '  mettre le bon chemin outlook
        OLk_OK = Shell("C:\Program Files (x86)\Microsoft Office\Office15\outlook.exe", 1)
      End If
     
      Set OL = CreateObject("Outlook.Application")
      Set OLmail = OL.CreateItem(0)
     
        With OLmail
     
      strSQL = "SELECT [Email] FROM [Agents]" _
    & " WHERE   [Agent] ='" & [Parent]![Chef de Projet] & "'"
    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
            .TO = rst("[Email]")
             If .TO = "" Then
            MsgBox "Pas de mail enregistré pour ce chef de Projet !", 16
            Exit Sub
            End If
           .Subject = "Test_envoi_Mail Access à " & [Parent].[Chef de Projet]
       .HtmlBody = "Bonjour, Le statut d'une action du projet  " & "<u>" & "<b>" & "<br />" & [Parent].[Nom du Projet] & "</u>" & "</b>" & " Num: " & "<u>" & "<b>" & [Parent].[Num_Projet] & "</u>" & "</b>" & ", a été modifié"
                   .Send
           End With
        '"Le statut d'une action du projet " & "<u>" & "<b>" & "</u>" & "</b>" '& " Num: " & "<u>" & "<b>" & [Parent].[Num_Projet] & "</u>" & "</b>" & ", a été modifié"
        Set OLmail = Nothing
        Set OL = Nothing
        Set OLk_Appli = Nothing
     
      FormattedMsgBox "Un Mail a été envoyé à :  " & [Parent].[Chef de Projet] & " pour indiquer le changement de statut d'une action  du projet " & [Parent].[Nom du Projet], _
                vbOKOnly + vbExclamation, "My Application"
                '
    End If
    End Sub
    Bonne soirée et bon Week End !

  16. #16
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Je vous laisse mon code modifié à tout hasard : pour l'événement ajout d'enregistrement action et modification du statut action :
    oui mais tel quel, le code ira systématiquement chercher le dernier statut, cela fonctionnera si c'est une création (Form_After_Insert) mais pas si c'est une modification (Statut_After_Update) puisque le code que je t'ai donné va systématiquement chercher le dernier enregistrement (oRst.Movelast) ...
    Access ne reconnait pas le [Me].[Nom_action], il ne trouve pas le "curent record"
    C'est bizarre, sur After_Update d'un contrôle le focus est forcément sur l'enregistrement courant, ou alors le nom du contrôle n'est pas le bon: il faut mettre le nom indiqué dans la propriété Nom du contrôle et pas celui de la propriété Source contrôle
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Merci !
    Bonjour tee_Grandbois,

    Merci pour votre retour d'hier.
    Concernant le [Me].[Nom_action] : J'ai tout essayé, de mettre sur d'autres évènements, de changer le nom du contrôle:
    ACCESS ne récupère pas le [Nom_action] courante sur laquelle le statut est changé.
    Si vous êtes d'accord on va en rester là, ce n'est pas très grave.
    Vous m'avez déjà beaucoup aidé .
    J'attends votre feu vert pour mettre en statut "Résolu".

    Bon week-end
    ALEXM

  18. #18
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Concernant le [Me].[Nom_action] : J'ai tout essayé, de mettre sur d'autres évènements, de changer le nom du contrôle:
    ACCESS ne récupère pas le [Nom_action] courante sur laquelle le statut est changé.
    Si vous êtes d'accord on va en rester là, ce n'est pas très grave.
    j'aurai bien aimé comprendre ce mystère ...
    y aurait-il une possibilité de poster une copie de la base avec simplement le formulaire, le sous-formulaire, requêtes et tables vides ou sans données confidentielles ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut suite...
    Oui volontiers,

    Je vais enlever images, photos, pour alléger.
    Une adresse mail peut -etre ?
    Au niveau des données il n' y a pas grand chose, zuippé cela devrait tenir !
    Merci

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 130
    Points : 55
    Points
    55
    Par défaut Taille de la Base
    La bas zippée:10,9 Mg.
    Il n' ya pas de données confidentielles dedans !
    Alexam

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème de syntaxe dans un formulaire php-mysql
    Par alex45500 dans le forum Langage
    Réponses: 3
    Dernier message: 05/11/2012, 15h56
  2. [MySQL] Requete SQL + formulaire
    Par axis60 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/06/2008, 15h44
  3. requete sql formulaire conserver le resultat
    Par Alex35 dans le forum ASP
    Réponses: 6
    Dernier message: 27/12/2006, 11h12
  4. Problème création d'une requete SQL (categorie,sous-cat)
    Par Raideman dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/11/2006, 15h23
  5. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo