Bonjour à tous,
J'expérimente actuellement l'ouverture générique (requête et arguments d'ouvertures variables) en asynchrone d'un recordset ADO attaquant une base SQL Server (sous VB6).
Tout fonctionne correctement (l'appli n'est pas suspendue pendant le traitement de la requête et le retour des enregistrements par le serveur), mais il me manque une information importante : le nombre d'enregistrements total retournés par la requête, avant même le chargement des enregistrements du coté client.
En effet, j'avais imaginé pouvoir afficher le pourcentage de récupération des enregistrements, histoire d'assurer un minimum de transparence pour l'utilisateur.
J'ai essayé diverses méthodes, mais aucune ne m'a permit de récupérer la précieuse information, à savoir :
- interrogation de RecordCount au premier évènement FetchProgress => provoque le chargement total du recordset en mode synchrone... (ma foi c'est logique)
- concaténation de "; PRINT @@ROWCOUNT" à la suite de la chaîne SQL, dans le but de provoquer une erreur voulue, mais cette erreur ne se produit jamais (d'ailleurs, la concaténation de "; PRINT 1/0" ne provoque aucune erreur non plus... j'en conclus donc que la méthode Open s'arrête au premier lot de la chaîne SQL contenant une clause SELECT)
- utilisation de la méthode Execute de l'objet Connection en asynchrone, à la place de Open du recordset, d'une part pour tenter d'utiliser l'argument par référence RecordsAffected (ne fonctionne pas); et d'autre part de récupérer @@ROWCOUNT part la concaténation de "; SELECT ROWCOUNT" à la fin de la chaine contenant la requête, mais ça ne marche pas non plus.
J'avoue arriver un peu à court de solutions, et apprécierait grandement vos avis experts
Partager