Excel et DB2
Le
René R.
Bonjour tout le monde,
D'abord une brève description de mon cas. Grosso modo, sur
une feuille excel, je peux inscrire des paramètres (nom de
la BD, nom du shéma, nom de la table et critères de
sélection). Quand je clique le bouton approprié, celui-ci
déclenche une macro vba qui lance une requête SQL selon
les paramètres spécifiés et permet d'extraire les
enresistrements correspondants dans une autre feuille du
même classeur. Lorsque j'accède la feuille contenant les
enregistrments extraits, je peux modifier certains champs
d'un enregistrement et quand je clique sur le bouton
approprié, celui-ci lance une macro exécutant un "update"
de l'enregistrement courant (celui sur lequel le curseur
est positionné). Jusque là, çà fonctionne bien.
Mon problème est le suivant. J'ai un autre bouton qui
déclenche une macro permettant de débouler l'ensemble des
enregistrements de la feuille. Le nombre d'enregistrements
est variable. Il peut y en avoir des dizaines, des
centaines ou des milliers. En fait, pour chaque ligne du
tableau, la macro fait un update dans la table DB2. Cela
fonctionne correctement jusqu'à ce que j'obtienne le
message d'erreur suivant "SQL1040N Le nombre maximal
d'applications connectables à la base de données est déjà
atteint. SQLSTATE=57030" après avoir traité environ 150
lignes. La documentation DB2 indique qu'il faut attendre
que des applications se disconnecte avant de continuer ?!
&@??!? En fait, la seule façon que j'aie trouvé pour
contourner le problème pour l'instant consiste à modifier
la macro pour traiter les 100 premières lignes, lancer la
macro, modifier la macro pour traiter les 100 lignes
suivantes, lancer la macro, et ainsi de suite jusqu'à la
fin.
DB2 semble empiler les requêtes (un update par ligne)
faite par excel avec la commande querytables. Peut-être
existe-t'il une commande ou fonction permettant de se
déconnecter de DB2 ou de vider la variable contenant la
pile. Comme vous pouvez le constater, je n'y connais pas
grand chose, c'est la première fois qu'on me demande de
faire ce genre de manipulation entre Excel et DB2 et je
suis en mode exploratoire.
Quelqu'un aurait-il une solution à me proposer? N'hésitez
pas à me suggérer une piste.
Merci à l'avance.
Cordialement.
René R.
D'abord une brève description de mon cas. Grosso modo, sur
une feuille excel, je peux inscrire des paramètres (nom de
la BD, nom du shéma, nom de la table et critères de
sélection). Quand je clique le bouton approprié, celui-ci
déclenche une macro vba qui lance une requête SQL selon
les paramètres spécifiés et permet d'extraire les
enresistrements correspondants dans une autre feuille du
même classeur. Lorsque j'accède la feuille contenant les
enregistrments extraits, je peux modifier certains champs
d'un enregistrement et quand je clique sur le bouton
approprié, celui-ci lance une macro exécutant un "update"
de l'enregistrement courant (celui sur lequel le curseur
est positionné). Jusque là, çà fonctionne bien.
Mon problème est le suivant. J'ai un autre bouton qui
déclenche une macro permettant de débouler l'ensemble des
enregistrements de la feuille. Le nombre d'enregistrements
est variable. Il peut y en avoir des dizaines, des
centaines ou des milliers. En fait, pour chaque ligne du
tableau, la macro fait un update dans la table DB2. Cela
fonctionne correctement jusqu'à ce que j'obtienne le
message d'erreur suivant "SQL1040N Le nombre maximal
d'applications connectables à la base de données est déjà
atteint. SQLSTATE=57030" après avoir traité environ 150
lignes. La documentation DB2 indique qu'il faut attendre
que des applications se disconnecte avant de continuer ?!
&@??!? En fait, la seule façon que j'aie trouvé pour
contourner le problème pour l'instant consiste à modifier
la macro pour traiter les 100 premières lignes, lancer la
macro, modifier la macro pour traiter les 100 lignes
suivantes, lancer la macro, et ainsi de suite jusqu'à la
fin.
DB2 semble empiler les requêtes (un update par ligne)
faite par excel avec la commande querytables. Peut-être
existe-t'il une commande ou fonction permettant de se
déconnecter de DB2 ou de vider la variable contenant la
pile. Comme vous pouvez le constater, je n'y connais pas
grand chose, c'est la première fois qu'on me demande de
faire ce genre de manipulation entre Excel et DB2 et je
suis en mode exploratoire.
Quelqu'un aurait-il une solution à me proposer? N'hésitez
pas à me suggérer une piste.
Merci à l'avance.
Cordialement.
René R.

Poser une question


Il me semble qu'il manque quelque chose à ta description.
A ) Comment te connectes-tu à ta base de données ? ADO ? DAO ? Autrement ?
B ) Est-ce possible que tu puisses donner un aperçu de ton code... Si quelqu'un a des suggestions à te faire, ces
dernières seront plus judicieuses !
C ) Toutes ces transactions se réalisent-elles à partir de documents situés sur le même PC, ou il y a-t-il une
composante "réseau" lors de l'exécution du code ?
Salutations!
"René R." Bonjour tout le monde,
D'abord une brève description de mon cas. Grosso modo, sur
une feuille excel, je peux inscrire des paramètres (nom de
la BD, nom du shéma, nom de la table et critères de
sélection). Quand je clique le bouton approprié, celui-ci
déclenche une macro vba qui lance une requête SQL selon
les paramètres spécifiés et permet d'extraire les
enresistrements correspondants dans une autre feuille du
même classeur. Lorsque j'accède la feuille contenant les
enregistrments extraits, je peux modifier certains champs
d'un enregistrement et quand je clique sur le bouton
approprié, celui-ci lance une macro exécutant un "update"
de l'enregistrement courant (celui sur lequel le curseur
est positionné). Jusque là, çà fonctionne bien.
Mon problème est le suivant. J'ai un autre bouton qui
déclenche une macro permettant de débouler l'ensemble des
enregistrements de la feuille. Le nombre d'enregistrements
est variable. Il peut y en avoir des dizaines, des
centaines ou des milliers. En fait, pour chaque ligne du
tableau, la macro fait un update dans la table DB2. Cela
fonctionne correctement jusqu'à ce que j'obtienne le
message d'erreur suivant "SQL1040N Le nombre maximal
d'applications connectables à la base de données est déjà
atteint. SQLSTATEW030" après avoir traité environ 150
lignes. La documentation DB2 indique qu'il faut attendre
que des applications se disconnecte avant de continuer ?!
&@??!? En fait, la seule façon que j'aie trouvé pour
contourner le problème pour l'instant consiste à modifier
la macro pour traiter les 100 premières lignes, lancer la
macro, modifier la macro pour traiter les 100 lignes
suivantes, lancer la macro, et ainsi de suite jusqu'à la
fin.
DB2 semble empiler les requêtes (un update par ligne)
faite par excel avec la commande querytables. Peut-être
existe-t'il une commande ou fonction permettant de se
déconnecter de DB2 ou de vider la variable contenant la
pile. Comme vous pouvez le constater, je n'y connais pas
grand chose, c'est la première fois qu'on me demande de
faire ce genre de manipulation entre Excel et DB2 et je
suis en mode exploratoire.
Quelqu'un aurait-il une solution à me proposer? N'hésitez
pas à me suggérer une piste.
Merci à l'avance.
Cordialement.
René R.