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

VBA Access Discussion :

Trop peu de paramètres 1 requis (erreur 3061) avec automation


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut Trop peu de paramètres 1 requis (erreur 3061) avec automation
    Bonjour à tous

    L'erreur 3061 apparait avec ce code d'automation Outlook sur une requête filtre qui fonctionne parfaitement dans l'interface, apparemment il n'y a pas d'erreur de noms de champs, je ne comprends donc pas pourquoi ça ne marche pas :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Public Function ExportActionsOutlook()
     
    Dim rst As DAO.Recordset
    Dim db As DAO.Database
     
    Set db = CurrentDb
    Set rst = CurrentDb.OpenRecordset("RqExportActionsOutlook")
    Debug.Print rst
        ' Enregistrer d'abord pour s'assurer que les champs requis sont remplis.
        DoCmd.RunCommand acCmdSaveRecord
     
        On Error GoTo AjoutAction_Err
     
    'Vérifie qu'il existe des actions à exporter
     
    If rst.RecordCount = 0 Then
     
    MsgBox "Il n'y a aucune action à exporter vers Outlook", vbOKOnly, "Transfert annulé"
     
    Exit Function
     
    End If
     
    rst.MoveFirst
     
    Do While Not rst.EOF
     
     
        ' Ajouter un nouveau rendez-vous.
     
           Dim outobj As New Outlook.Application
           Dim outappt As Outlook.AppointmentItem
           Set outobj = CreateObject("outlook.application")
           Set outappt = outobj.CreateItem(olAppointmentItem)
     
           With outappt
              .Start = rst!HoraireDebut
              .Duration = Nz(rst!DuréeAction)
              .Subject = rst!Contact & " " & rst![Vendeur/Intervenant]
              .Body = Nz(rst!NotesAction)
              .Location = Nz(rst!LieuAction)
              .ReminderMinutesBeforeStart = Nz(rst!MinutesRappel)
              .ReminderSet = Nz(rst!RappelAction)
     
                 ' Définir l'indicateur AjoutéàOutlook, enregistrer, afficher un message.
                 rst.Update "ajoutéàoutlook", -1
                 .Save
           End With
     
       'Boucle
       rst.MoveNext
       Loop
     
       ' Libérer la variable objet Outlook.
       Set outobj = Nothing
       Set rst = Nothing
       Set outappt = Nothing
     
     
     MsgBox " Actions ajoutées à Outlook ! "
     
     Exit Function
    AjoutAction_Err:
        MsgBox " Erreur " & err.Number & Chr(10) & err.Description
        Exit Function
    End Function
    La requête source est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T_RendezVous.HoraireDebut, T_RendezVous.NumContact, T_RendezVous.NotesAction, T_RendezVous.LieuAction, T_RendezVous.RappelAction, T_RendezVous.MinutesRappel, T_RendezVous.AjoutéàOutlook, T_RendezVous.DuréeAction, RqContacts.Contact, [Vendeurs et Intervenants].[Vendeur/Intervenant]
    FROM RqContacts INNER JOIN ([Vendeurs et Intervenants] INNER JOIN T_RendezVous ON [Vendeurs et Intervenants].IdVendeurIntervenant = T_RendezVous.IdIntervenant) ON RqContacts.NumContact = T_RendezVous.NumContact
    WHERE (((T_RendezVous.NumGrpAction)=[Formulaires]![Groupes Actions]![NumGrpAction]))
    ORDER BY T_RendezVous.HoraireDebut DESC;
    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 007
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 007
    Points : 24 578
    Points
    24 578
    Par défaut
    Bonjour,

    Ton problème est là.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Formulaires]![Groupes Actions]![NumGrpAction]
    Il y a plusieurs discussions sur ce sujet dont l'une le mois dernier et un tuto.

    Pas bien de ne pas utiliser la recherche... surtout pour un habitué

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Merci pour ta réponse Loufab mais je ne la comprend pas !

    CA veut dire que je ne peux pas me servir directement du nom de la requête pour ce recordset car on est en DAO ?
    Je suis obligé alors de créér un string sql avec le contenu de la requête en changeant la syntaxe du champ filtre ?

    Y a pas moyen d'utiliser la requête d'origine tel quel dans le code ?

    merci

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 007
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 007
    Points : 24 578
    Points
    24 578
    Par défaut
    Bonjour,
    Pas écrite comme ça en tout cas. Il va falloir la transformer pour que DAO puisse interprété ton adresse IHM.
    Soit tu utilises PARAMETERS soit tu utilises une fonction (perso ou standard) pour qu'il puisse évaluer l'expression.

    Voici une discussion qui propose des solutions.

    http://www.developpez.net/forums/d14...us-formulaire/

    Mais ce ne sont pas les seules.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Bonjour Loufab, merci pour ta réponse, j'ai un peu avancé :

    J'ai compris qu'il faut se servir de parameters pour que la requête s'éxécute correctement en DAO , j'ai donc écrit ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim db As DAO.Database, rst As DAO.Recordset
    Dim qdf As QueryDef
     
        Set qdf = CurrentDb.QueryDefs("rqexportactionsoutlook")
     
        qdf.Parameters("Forms![groupes actions]![NumGrpAction]").Value = Forms![groupes actions]![NumGrpAction]
        Set rst = qdf.OpenRecordset
        Debug.Print rst
    maintenant il me sort "élément non trouvé, erreur 3265" pourtant dans l'éditeur VBA les références à la valeur demandée sont bien auto-complétées par l'éditeur ce qui indique une bonne réference au control qui sert de filtre sur le formulaire ... Que se passe t'il ?

    Merci d'avance

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 007
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 007
    Points : 24 578
    Points
    24 578
    Par défaut
    Tu as modifié le code SQL de requête ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Citation Envoyé par loufab Voir le message
    Tu as modifié le code SQL de requête ?
    Non seulement je l'ai pas modifiée mais elle marche toujours parfaitement dans l'interface, je ne vois donc pas ou ça coince ...
    De toutes façons une fois le code correct, je peux décider de n'utiliser que certains champs de requête dans mon automation et pas tous non ?

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 007
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 007
    Points : 24 578
    Points
    24 578
    Par défaut
    Bonjour,

    Utiliser simplement la propriété Parameters de DAO ne suffit malheureusement pas.
    Il faut également modifier le SQL de la requête.

    Sinon passer par une fonction et dans ce cas il y a juste une modif coté requête et rien coté code. Il me semble que tu n'as pas lu le lien que je t'ai fourni

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Merci Loufab pour ces précisions mais je ne trouve toujours pas de solution ...
    Peut-on faire ça sans passer par DAO en utilisant une instruction SQL ?

    Le but étant de faire une boucle pour automation de RDV dans Outlook (voir le restant du code).

    Merci

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 007
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 007
    Points : 24 578
    Points
    24 578
    Par défaut
    Solution 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T_RendezVous.HoraireDebut, T_RendezVous.NumContact, T_RendezVous.NotesAction, T_RendezVous.LieuAction, T_RendezVous.RappelAction, T_RendezVous.MinutesRappel, T_RendezVous.AjoutéàOutlook, T_RendezVous.DuréeAction, RqContacts.Contact, [Vendeurs et Intervenants].[Vendeur/Intervenant]
    FROM RqContacts INNER JOIN ([Vendeurs et Intervenants] INNER JOIN T_RendezVous ON [Vendeurs et Intervenants].IdVendeurIntervenant = T_RendezVous.IdIntervenant) ON RqContacts.NumContact = T_RendezVous.NumContact
    WHERE (((T_RendezVous.NumGrpAction)=environ("[Formulaires]![Groupes Actions]![NumGrpAction]")))
    ORDER BY T_RendezVous.HoraireDebut DESC;
    Solution 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT T_RendezVous.HoraireDebut, T_RendezVous.NumContact, T_RendezVous.NotesAction, T_RendezVous.LieuAction, T_RendezVous.RappelAction, T_RendezVous.MinutesRappel, T_RendezVous.AjoutéàOutlook, T_RendezVous.DuréeAction, RqContacts.Contact, [Vendeurs et Intervenants].[Vendeur/Intervenant]
    FROM RqContacts INNER JOIN ([Vendeurs et Intervenants] INNER JOIN T_RendezVous ON [Vendeurs et Intervenants].IdVendeurIntervenant = T_RendezVous.IdIntervenant) ON RqContacts.NumContact = T_RendezVous.NumContact
    WHERE (((T_RendezVous.NumGrpAction)=getNumGrpAction()))
    ORDER BY T_RendezVous.HoraireDebut DESC;
     
    'dans un module standard
    Public function getNumGrpAction()
    getNumGrpAction = Forms("Groupes Actions").NumGrpAction
    end Function
    3ème Solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    PARAMETERS groupmachin Long;
    SELECT T_RendezVous.HoraireDebut, T_RendezVous.NumContact, T_RendezVous.NotesAction, T_RendezVous.LieuAction, T_RendezVous.RappelAction, T_RendezVous.MinutesRappel, T_RendezVous.AjoutéàOutlook, T_RendezVous.DuréeAction, RqContacts.Contact, [Vendeurs et Intervenants].[Vendeur/Intervenant]
    FROM RqContacts INNER JOIN ([Vendeurs et Intervenants] INNER JOIN T_RendezVous ON [Vendeurs et Intervenants].IdVendeurIntervenant = T_RendezVous.IdIntervenant) ON RqContacts.NumContact = T_RendezVous.NumContact
    WHERE (((T_RendezVous.NumGrpAction)=[GroupMachin])))
    ORDER BY T_RendezVous.HoraireDebut DESC;
     
    ...
    qry.Parameters("groupmachin") = valeur
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Merci beaucoup Loufab pour ces éclaircissements, j'essaye ce week-end et si ça marche je reviens poster un message ...

    Bon week-end

  12. #12
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Bonjour à tous,

    J'ai tout essayé, impossible de faire fonctionner ce code ... Dernièrement j'applique la méthode pour requêtes paramétrées en VBA dont voici le code et ça me donne une erreur '3265' "élement non trouvé dans cette collection" en pointant cette ligne , incompréhensible !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qdf.Parameters("[Forms]![groupes actions]![numgrpaction]") = Forms![groupes actions]!NumGrpAction
    Code complet :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    Public Function ExportActionsOutlook()
     
    Dim qdf As DAO.QueryDef
    Dim rst As DAO.Recordset
     
      ' Référence à la requête
    Set qdf = CurrentDb.QueryDefs("rqexportactionsoutlook")
     
    qdf.Parameters("[Forms]![groupes actions]![numgrpaction]") = Forms![groupes actions]!NumGrpAction
    Set rst = qdf.OpenRecordset
     
     
        ' Enregistrer d'abord pour s'assurer que les champs requis sont remplis.
        DoCmd.RunCommand acCmdSaveRecord
     
        On Error GoTo AjoutAction_Err
     
    'Vérifie qu'il existe des actions à exporter
     
    If rst.RecordCount = 0 Then
     
    MsgBox "Il n'y a aucune action à exporter vers Outlook", vbOKOnly, "Transfert annulé"
     
    Exit Function
     
    Else
     
    rst.MoveFirst
     
    Do While Not rst.EOF
     
     
        ' Ajouter un nouveau rendez-vous.
     
           Dim outobj As New Outlook.Application
           Dim outappt As Outlook.AppointmentItem
           Set outobj = CreateObject("outlook.application")
           Set outappt = outobj.CreateItem(olAppointmentItem)
     
           With outappt
     
              .Start = rst!HoraireDebut
              .Duration = Nz(rst!DuréeAction)
              .Subject = rst!Contact & " " & rst![Vendeur/Intervenant]
              .Body = Nz(rst!NotesAction)
              .Location = Nz(rst!LieuAction)
              .ReminderMinutesBeforeStart = Nz(rst!MinutesRappel)
              .ReminderSet = Nz(rst!RappelAction)
     
                 ' Définir l'indicateur AjoutéàOutlook, enregistrer, afficher un message.
                 rst.Update "ajoutéàoutlook", -1
                .Save
           End With
     
       'Boucle
       rst.MoveNext
       Loop
      End If
     
       ' Libérer la variable objet Outlook.
       Set outobj = Nothing
       Set rst = Nothing
       Set outappt = Nothing
        ' Libération de la référence
    Set qdf = Nothing
     MsgBox " Actions ajoutées à Outlook ! "
     
     Exit Function
    AjoutAction_Err:
        MsgBox " Erreur " & err.Number & Chr(10) & err.Description
        Exit Function
    End Function
    Merci de votre aide

  13. #13
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 284
    Points : 19 481
    Points
    19 481
    Billets dans le blog
    64
    Par défaut
    Salut,

    Si on reprend la 3ème solution proposée par Loufab, ça devrait donner pour la requête "rqexportactionsoutlook":

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PARAMETERS [Forms]![groupes actions]![numgrpaction] Long;
    SELECT T_RendezVous.HoraireDebut, T_RendezVous.NumContact, T_RendezVous.NotesAction, T_RendezVous.LieuAction, T_RendezVous.RappelAction, T_RendezVous.MinutesRappel, T_RendezVous.AjoutéàOutlook, T_RendezVous.DuréeAction, RqContacts.Contact, [Vendeurs et Intervenants].[Vendeur/Intervenant]
    FROM RqContacts INNER JOIN ([Vendeurs et Intervenants] INNER JOIN T_RendezVous ON [Vendeurs et Intervenants].IdVendeurIntervenant = T_RendezVous.IdIntervenant) ON RqContacts.NumContact = T_RendezVous.NumContact
    WHERE (((T_RendezVous.NumGrpAction)=[Forms]![groupes actions]![numgrpaction] )))
    ORDER BY T_RendezVous.HoraireDebut DESC;


    Note que le paramètre de la requête est bien cette fois-ci [Forms]![groupes actions]![numgrpaction].

    Ensuite dans le code VBA, tu devrais avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      ' Référence à la requête
    Set qdf = CurrentDb.QueryDefs("rqexportactionsoutlook")
     
    qdf.Parameters("[Forms]![groupes actions]![numgrpaction]") = Forms![groupes actions]!NumGrpAction
    Set rst = qdf.OpenRecordset()
    ...
    Et bien sûr il faut que le formulaire "groupes actions" soit ouvert quand tu exécutes le code.

    a+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  14. #14
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Bonjour à tous

    J'ai donc fait selon vos recommandations : tout à l'air d'être accepté sauf qu'avant que les données soient exportées vers Outlook apparait une erreur 13 d'incompatibilité de type ...
    Pourtant en faisant un pas à pas l'erreur sort en dernier sans pointer nulle part dans le code.
    le debug.print renvoie des valeurs correctes sauf un null pour le champ [notesaction] qui me paraît une valeur normale ...

    La requête source ne contient plus de filtre mais le paramètre est bien pris en compte dans le volet "Paramètres" et s'éxécute parfaitement

    D’où pourrait venir cette erreur d'incompatibilité alors ?

    NB: J'ai déclaré en "string" le parameter car il était en "Long" car il s'agit vraiment d'un champ texte de taille 13 combinant chiffres et lettres ...

    Merci

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
     
    Public Function ExportActionsOutlook()
     
    Dim qdf As DAO.QueryDef
    Dim rst As DAO.Recordset
     
      ' Référence à la requête
     
    Set qdf = CurrentDb.QueryDefs("rqexportactionsoutlook")
    qdf.Parameters("[Forms]![groupes actions]![numgrpaction]") = Forms![groupes actions]![NumGrpAction]
    Set rst = qdf.OpenRecordset()
     
     
        ' Enregistrer d'abord pour s'assurer que les champs requis sont remplis.
        DoCmd.RunCommand acCmdSaveRecord
     
        On Error GoTo AjoutAction_Err
     
    'Vérifie qu'il existe des actions à exporter
     
    If rst.RecordCount = 0 Then
     
    MsgBox "Il n'y a aucune action à exporter vers Outlook", vbOKOnly, "Transfert annulé"
     
    Exit Function
     
    Else
     
    rst.MoveFirst
     
    Do While Not rst.EOF
     
     
        ' Ajouter un nouveau rendez-vous.
     
           Dim outobj As New Outlook.Application
           Dim outappt As Outlook.AppointmentItem
           Set outobj = CreateObject("outlook.application")
           Set outappt = outobj.CreateItem(olAppointmentItem)
     
           With outappt
     
              .Start = rst!HoraireDebut
              .Duration = Nz(rst!DuréeAction)
              .Subject = rst!Contact & " " & rst![vendeur/intervenant]
              .Body = Nz(rst!NotesAction)
              .Location = Nz(rst!LieuAction)
              .ReminderMinutesBeforeStart = Nz(rst!MinutesRappel)
              .ReminderSet = Nz(rst!RappelAction)
              Debug.Print rst!HoraireDebut, rst!DuréeAction, rst![vendeur/intervenant], rst!NotesAction, rst!LieuAction, rst!MinutesRappel, rst!RappelAction
     
     
     
                 ' Définir l'indicateur AjoutéàOutlook, enregistrer, afficher un message.
     
                 rst.Update "ajoutéàoutlook", -1
                .Save
           End With
     
       'Boucle
       rst.MoveNext
       Loop
      End If
     
       ' Libérer la variable objet Outlook.
       Set outobj = Nothing
       Set rst = Nothing
       Set outappt = Nothing
        ' Libération de la référence
    Set qdf = Nothing
     MsgBox " Actions ajoutées à Outlook ! "
     
     Exit Function
     
    AjoutAction_Err:
        MsgBox " Erreur " & err.Number & Chr(10) & err.Description
        Exit Function
    End Function

  15. #15
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 284
    Points : 19 481
    Points
    19 481
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    Une valeur nulle dans un champ peut lever ce type d'erreur si tu dois affecter cette valeur à un autre champ.

    Tu devrais plutôt essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Body = Nz(rst!NotesAction,"")
    Sans garantie
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  16. #16
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    je te remercie pour ta réponse j'ai tout mis selon ton conseil : rien y fait ! Késako ?

  17. #17
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 284
    Points : 19 481
    Points
    19 481
    Billets dans le blog
    64
    Par défaut
    essaie de faire un débug de ton paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    debug.print forms![groupes actions]!numgrpaction
    pour vérifier ce qu'il affiche...
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  18. #18
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Il affiche bien le bon string original ...

  19. #19
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 284
    Points : 19 481
    Points
    19 481
    Billets dans le blog
    64
    Par défaut
    Apparemment ta commande debug.print qui apparaît dans ton ancien code passe donc l'erreur viendrait de la partie suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rst.Update "ajoutéàoutlook", -1
                .Save
    El là j'avoue ne pas comprendre ce que tu veux faire avec cette instruction rst.Update "ajoutéàoutlook", -1....

    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  20. #20
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Cela sert à actualiser le champ "Ajouté à Outlook" permettant d'exporter ensuite seulement les actions non encore exportées dans Outlook...

    Je vais virer cette commande et je vous communique le résultat d'ici ce soir

    Merci

Discussions similaires

  1. Erreur 3061 : Trop peu de paramètres.1 attendu
    Par deglingo37 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 05/12/2014, 19h55
  2. Réponses: 8
    Dernier message: 03/09/2012, 18h51
  3. Trop peu de paramètres. <nombre> attendu. (Erreur 3061)
    Par myriame dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/03/2012, 23h44
  4. Réponses: 3
    Dernier message: 04/04/2006, 19h59
  5. Réponses: 4
    Dernier message: 15/03/2006, 16h47

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