Comme le titre le suggère, je me demandais s'il était possible de remplir un RecordSource ou un RowSource sans maintenir une connexion persistante à la base de données externe que j'interroge.
J'ai essayé les deux méthodes énumérées ci-dessous, sans succès :
Clause IN
ps.RecordSource = " SELECT TM_Adjudicator AS Adjudicator, Nz(Sum(PS_DB_view.PS_Points+PS_DB_view.PS_Adhoc),0) AS [Total Points] " & _
" FROM SD_Adjudicators_view " & _
" LEFT JOIN PS_DB_view ON (((cstr(SD_Adjudicators_view.TM_Adjudicator) = cstr(PS_DB_view.PS_Adjudicator)) AND cdate(PS_DB_view.PS_Date) >= #" & dtStart_fmt & "#) AND cdate(PS_DB_view.PS_Date) <= #" & dtEnd_fmt & "#) " & _
" IN '' [MS Access;PWD=**STRING**;DATABASE=I:\**PATH**\PM_DB_view.accdb] " & _
" WHERE SD_Adjudicators_view.TM_TeamName = 'Z999' " & _
" GROUP BY TM_Adjudicator; "
(cela maintient une connexion persistante pendant toute la durée de vie du formulaire utilisateur).
DB.Connexion
Set dbs = OpenDatabase("I:\**PATH**\PM_DB_testenvironment.accdb", False, False, "MS Access;**STRING**")
Set rst = dbs.OpenRecordset(" SELECT TM_Adjudicator AS Adjudicator, Nz(Sum(PS_DB_view.PS_Points+PS_DB_view.PS_Adhoc),0) AS [Total Points] " & _
" FROM SD_Adjudicators_view " & _
" LEFT JOIN PS_DB_view ON (((cstr(SD_Adjudicators_view.TM_Adjudicator) = cstr(PS_DB_view.PS_Adjudicator)) AND cdate(PS_DB_view.PS_Date) >= #" & dtStart_fmt & "#) AND cdate(PS_DB_view.PS_Date) <= #" & dtEnd_fmt & "#) " & _
" WHERE SD_Adjudicators_view.TM_TeamName = 'Z999' " & _
" GROUP BY TM_Adjudicator; ")
Set ps.Form.RecordSource = rst
rst.Close
Set rst = Nothing
dbs.Close
Set dbs = Nothing
Cela aussi maintient une connexion persistante jusqu'à ce que la fonction de fermeture soit appelée, et les valeurs RowSource / RecordSource sont perdues.
Existe-t-il un moyen de lire les données, de les afficher et de fermer la base de données tout en conservant les enregistrements visibles ?