Bonjour ou bonsoir,

J'ai une requête fait par l'assistant d'Access qui a besoin de paramètres dont les données viennent directement d'un formulaire (un combobox et deux champs texte formatés pour des dates).

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT Boites.ID_Boite, Boites.ID_Projet, Boites.Date_Creation_Boite, Total_Heures.Total_secondes_Saisie, Total_Heures.Total_secondes_Preparation, Total_Heures.Total_secondes_Numerisation, Total_Heures.Total_secondes_CQ, Total_Heures.Total_Secondes_Reprise, Total_Heures.Total_secondes_REF, Total_Heures.Total_secondes_Boite
FROM Boites INNER JOIN Total_Heures ON Boites.ID_Boite = Total_Heures.ID_Boite
WHERE (((Boites.ID_Projet)=[Formulaires]![F_Createur_Rapport_Direction]![Cmb_Liste_Projets_États].[value]) AND ((Boites.Date_Creation_Boite) Between [Forms]![F_Createur_Rapport_Direction]![Txt_Date_Debut] And [Forms]![F_Createur_Rapport_Direction]![Txt_Date_Fin]))
ORDER BY Boites.[No];

Cette requête sort un état (rapport) qui affichera les no de boîtes insi que le temps pour chaque action sur les boîtes. Le temps en secondes est convertis en string format HH:MM:SS (code que j'ai pris sur la F.A.Q.).

J'ai fouillé sur la FAQ et j'ai trouvé ceci...

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
Dim qdf As DAO.QueryDef 
Dim rcs As DAO.Recordset 
 
  ' Référence à la requête 
Set qdf = CurrentDb.QueryDefs("NomQuery") 
 
  ' Code qui utilise qdf 
  ' Par exemple 
qdf.Parameters("NomParamètre") = valeur     '<== si requête paramétrée 
qdf.Execute                                 '<== si requête action 
Set rcs = qdf.OpenRecordset                 '<== pour travailler sur les données 
 
 
  ' Libération de la référence 
Set qdf = Nothing
Perso j'ai pris le bout de code que j'avais commencé et je l'ai modifié... je vous montre cela...

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
Private Function VerifierQteEnregistrementsDansRequetePourRapport(nomRequete As String) As Boolean
 
    Dim BD As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim RS As DAO.Recordset
    On Error GoTo erreurFatale
          ' Référence à la requête
        Set BD = CurrentDb
        Set qdf = BD.QueryDefs(nomRequete)
        Set RS = qdf.OpenRecordset
 
        If RS.EOF Then
            VerifierQteEnregistrementsDansRequetePourRapport = False
        Else
            VerifierQteEnregistrementsDansRequetePourRapport = True
        End If
        GoTo fermerConnexions
erreurFatale:
    MsgBox "Prob Private Function VerifierQteEnregistrementsDansRapport(nomRapport As String) As Boolean --- N° erreur : " & Err.Number & vbLf & Err.Description
    GoTo fermerConnexions
    Exit Function
 
fermerConnexions:
    Set qdf = Nothing
    Set RS = Nothing
End Function

J'ai ce message d'erreur lorsque je mets le code afin que la fonction soit demandée..

Nom : erreur.JPG
Affichages : 173
Taille : 18,5 Ko

Je suis perdu...

Est-ce que les paramètres dans la requête doit être incluse dans le code DAO de ma fonction ?

Si oui comment je fais pour le between ???? Si vous regardez le code SQL vous verrez ce que les valeurs dans Boites.Date_Creation_Boite seront une date entre dateX et dateY saisies dans un formulaire...

Si je veux faire ce code c'est parce si avec les dates et le ID du projet cela ne retourne RIEN ( 0 enregistrement) alors la commande

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 DoCmd.OutputTo acOutputReport, "Etat_Liste_Boites_par_Dates_Avec_Parametres__OK", acFormatPDF, Chemin_PDF & "\Rapport des boites crées avec heures effectuées du projet_" & Nom_Projet & "_entre " & D_Date & " au " & F_Date & ".pdf", False
me sort un message d'erreur que le docmd.OutPutTp acOutPutReport ne peut sortir le rapport... car 0 enregistrement.

Merci de votre aide et ou éclaircissement.