Bonjour,
En développant une IHM vba pour centraliser les demandes d’invites et les rendre plus intuitive, nous procédons via une macro à l’ouverture d’un rapport BO, puis au rafraichissement des fournisseurs de données en changeant le code SQL pour l’adapter à la demande utilisateur saisie dans l’IHM. Pour cela nous utilisons les lignes de code suivantes :
strSql = ActiveDocument.DataProviders.Item(i).SQL & " WHERE (" & ParamWhere & ")"
ActiveDocument.DataProviders.Item(i).SQL = strSql
On reprend le code de la requête créée dans BO, puis on y ajoute notre clause WHERE en fonction des données saisie par l’utilisateur, ce qui remplace les invites BO classiques.
Cela dit, en rafraichissant les données comme cela, le temps d’exécution pour un seul fournisseur de données passe de moins de 10 secondes sous BO à plus de 45 secondes en le lançant depuis une macro VBA pour les mêmes nombres de données.
Existe-t-il un moyen d’optimiser ce genre de traitements ?
Y aurait-il un moyen de contourner ce problème ?
Merci par avance
Partager