passer les paramètres pour enregistrer la source avec la requête Access2007

Je suis relativement nouveau à l'accès et j'ai été chargé d'améliorer la navigation de l'application.

J'ai un formulaire qui est utilisé pour ouvrir le rapport. La source d'enregistrement du rapport est la suivante,

SELECT 
    Projects.Project_Number, 
    Projects.Customer, 
    Projects.End_User, 
    Projects.Engineering_Company, 
    [Merged Ship and Delivery Dates].Sched_Next_Delivery_Date, 
    [Merged Ship and Delivery Dates].Sched_Next_Ship_Date, 
    Projects.QC_Pack_Req, 
    Projects.Target_QC_Pack_Date, 
    Projects.Invoice_QC_Pack 
FROM 
    Projects LEFT JOIN [Merged Ship and Delivery Dates] 
    ON Projects.Project_Number = [Merged Ship and Delivery Dates].Project_Number 
WHERE 
    (((Projects.Project_Number = [Project Number] ))) 
ORDER BY Projects.Project_Number;

J'essaie d'ouvrir le rapport sans m'avoir invité à chaque fois. Dans certains cas, j'ai besoin d'actualiser le rapport ou de l'ouvrir à partir d'autres formulaires. J'ai essayé d'utiliser

DoCmd.OpenReport "Project Control Sheet", _ 
                acViewReport, , _ 
                "[Project_Number]=" & Me.ProjectNumber, , _
                "[Project_Number]=" & Me.ProjectNumber

Il est toujours impossible de transmettre les paramètres à la source d'enregistrement. Y at-il de toute façon pour moi de passer les paramètres à la source d'enregistrements (requête)?

J'ai essayé d'utiliser

Forms! [nom_formulaire] ProjectNumber

dans l'instruction where mais cela ne fonctionne que pour un seul formulaire et j'ai d'autres formulaires qui ouvrent ce rapport.

Le but de l'actualisation du formulaire est de permettre aux utilisateurs d'afficher les modifications apportées au rapport après leur mise à jour.

0

1 Réponses

Si vous supprimez la clause WHERE de la requête Record Source du rapport, vous pouvez filtrer ultérieurement les lignes renvoyées avec l'option WhereCondition du DoCmd.OpenReport méthode

Dim strWhereCondition As String
strWhereCondition = "[Project_Number]=" & Me.ProjectNumber.Value
Debug.Print strWhereCondition ' <- view this in Immediate window; Ctrl+g will take you there
'DoCmd.OpenReport "Project Control Sheet", acViewReport, , strWhereCondition
DoCmd.OpenReport ReportName:="Project Control Sheet", _
    View:=acViewReport, WhereCondition:=strWhereCondition

Si vous voulez une approche différente, vous pouvez utiliser un TempVar , puisque votre version d'Access est 2007.

TempVars.Add "ProjectNumber", Me.ProjectNumber.Value

Et modifiez la requête Source d'enregistrement pour utiliser TempVar ...

WHERE Projects.Project_Number = [TempVars]![ProjectNumber]
0
ajouté