query table trop long

  • Initiateur de la discussion xavier
  • Date de début
X

xavier

Guest
Bonjour,

Je me sers des QueryTable sous excel 97 pour récupérer des données de table Oracle via ODBC.
J'ai un souci pourtant :
si ma requête ne ramène aucun enregistrement - ce que je vérifie en exécutant la requête via un autre outil - alors le temps d'exécution devient très long ~1min et le nombre de ligne dans l'objet ResultRange peut valoir ~800000.

Quelqu'un connait il ce pb et une parade éventuelle?

Merc i
 

Jam

XLDnaute Accro
Salut Xavier,

Je connais pas bien les QueryTable, mais pour faire ce que tu souhaite je t'invite à passer par ADO. Tu pourras lancer tes requêtes aussi bien.

Bon, pour ton problème, avec ADO, ben tu a un Recordset (qui contient le résultat de ta requête. Tu peux ensuite recopier les enregistrement 1 par 1 jusqu'à 65... Ensuite tu bascule dans un autre onglet et tu copies le reste.

Dans tous les cas tu ne pourra pas dépasser les 65K lignes max d'Excel.

Pour la string de connection à une base Oracle via ADO, je te fourni le code ci-après:

OLE DB Provider for Oracle (from Microsoft)

oConn.Open 'Provider=msdaora;' & _
'Data Source=MyOracleDB;' & _
'User Id=myUsername;' & _
'Password=myPassword'

For more information, see: Microsoft OLE DB Provider for Oracle

To view Microsoft KB articles related to OLE DB Provider for Oracle, click here

* OLE DB Provider for Oracle (from Oracle)

For Standard Security

oConn.Open 'Provider=OraOLEDB.Oracle;' & _
'Data Source=MyOracleDB;' & _
'User Id=myUsername;' & _
'Password=myPassword'

For a Trusted Connection

oConn.Open 'Provider=OraOLEDB.Oracle;' & _
'Data Source=MyOracleDB;' & _
'User Id=/;' & _
'Password='
' Or

oConn.Open 'Provider=OraOLEDB.Oracle;' & _
'Data Source=MyOracleDB;' & _
'OSAuthent=1'

Note: 'Data Source=' must be set to the appropriate Net8 name which is known to the naming method in use. For example, for Local Naming, it is the alias in the tnsnames.ora file; for Oracle Names, it is the Net8 Service Name.

For more information, see: Oracle Provider for OLE DB Developer's Guide

Bon courage
 
X

xavier

Guest
Mr Excel,

Désolé pour cette réponse si tardive.
Merci beaucoup pour ton aide, je pense utiliser cette approche dans une prochaine version; pour l'heure j'ai une solution de contournement qui vaut ce qu'elle vaut :
Je fais un 'select count' et je regarde le nombre de ligne ramenées en interrogeant la seule cellule de l'objet ResultRange renseigné.
Si la valeur est < 2, c'est que la requête est vide.

Cordialement
Xavier
 

Statistiques des forums

Discussions
313 032
Messages
2 094 576
Membres
106 054
dernier inscrit
Mohajer