Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

accéder à une base DB2 par VBA

5 réponses
Avatar
Jean-Claude
Bonjour,

sous Excel 2003, XP SP3, j'ai une macro VBA qui se connecte à un serveur
ayant une base SQL SERVER :

Set con = New ADODB.Connection
con.ConnectionString = "Provider=SQLOLEDB;Data Source=XXXXXX;
Initial Catalog=XXXXXX;User ID=XXXXXX;Password=XXXXXX;"
con.Open

Tout fonctionne bien, je peux ensuite lire mes données et les traiter.
J'essaye maintenant de me connecter à une base DB2 sur un autre serveur
Windows Server 2008, mais impossible :

- sur le serveur, j'ai : dans "ODBC Data Source Administrator",
nom de la base = "DDD" et "IBM DB2 ODBC Driver - DB2"
- par mon VBA je tente de me connecter avec :
con.ConnectionString = "Driver={IBM DB2 ODBC DRIVER};Database=DDD;
Hostname=XXX.XXX.XXX.XXX;Protocol=TCPIP;Uid=UUU;Pwd=MMM;"
avec :
XXX.XXX.XXX.XXX = IP du serveur (si je mets le nom du serveur, pas
mieux)
et j'obtiens toujours :
"Erreur d'exécution -2147467259 (80004005), Erreur Automation"

J'ai essayé d'autre méthodes, mais en vain :

con.ConnectionString = "Provider=DB2OLEDB;Network Transport
Library=TCPIP;
Network Address=XXX.XXX.XXX.XXX;Initial Catalog=DDD;User
ID=UUU;Password=MMM;"

con.ConnectionString =
"Provider=IBMDADB2;Database=DDD;Hostname=XXX.XXX.XXX.XXX;
Protocol=TCPIP;Uid=UUU;Pwd=MMM;"

Une idée ? Ajouter un numéro de port ? Mais je le trouve où ?
Y a-t-il des restrictions pour accéder à ces bases ? Mais comment puis-je le
vérifier ?
(si je vais physiquement sur le serveur, je peux ouvrir une fenetre de
commande DB2 et consulter ainsi le contenu de la base ; bien sûr, ce que je
tente est pour consulter les bases de quelques dizaines de serveurs)
Et je n'arrive guère à comprendre ce que je peux trouver sur google.
Merci d'avance...

JC

5 réponses

Avatar
isabelle
bonjour JC,

as tu essayé de le faire à la mimine avec l'enregistreur de macro ?

isabelle


Le 2010-11-30 11:51, Jean-Claude a écrit :
Bonjour,

sous Excel 2003, XP SP3, j'ai une macro VBA qui se connecte à un serveur
ayant une base SQL SERVER :

Set con = New ADODB.Connection
con.ConnectionString = "Provider=SQLOLEDB;Data Source=XXXXXX;
Initial Catalog=XXXXXX;User ID=XXXXXX;Password=XXXXXX;"
con.Open

Tout fonctionne bien, je peux ensuite lire mes données et les traiter.
J'essaye maintenant de me connecter à une base DB2 sur un autre serveur
Windows Server 2008, mais impossible :

- sur le serveur, j'ai : dans "ODBC Data Source Administrator",
nom de la base = "DDD" et "IBM DB2 ODBC Driver - DB2"
- par mon VBA je tente de me connecter avec :
con.ConnectionString = "Driver={IBM DB2 ODBC DRIVER};DatabaseÝD;
Hostname=XXX.XXX.XXX.XXX;Protocol=TCPIP;Uid=UUU;Pwd=MMM;"
avec :
XXX.XXX.XXX.XXX = IP du serveur (si je mets le nom du serveur, pas
mieux)
et j'obtiens toujours :
"Erreur d'exécution -2147467259 (80004005), Erreur Automation"

J'ai essayé d'autre méthodes, mais en vain :

con.ConnectionString = "ProviderÛ2OLEDB;Network Transport
Library=TCPIP;
Network Address=XXX.XXX.XXX.XXX;Initial CatalogÝD;User
ID=UUU;Password=MMM;"

con.ConnectionString > "Provider=IBMDADB2;DatabaseÝD;Hostname=XXX.XXX.XXX.XXX;
Protocol=TCPIP;Uid=UUU;Pwd=MMM;"

Une idée ? Ajouter un numéro de port ? Mais je le trouve où ?
Y a-t-il des restrictions pour accéder à ces bases ? Mais comment puis-je le
vérifier ?
(si je vais physiquement sur le serveur, je peux ouvrir une fenetre de
commande DB2 et consulter ainsi le contenu de la base ; bien sûr, ce que je
tente est pour consulter les bases de quelques dizaines de serveurs)
Et je n'arrive guère à comprendre ce que je peux trouver sur google.
Merci d'avance...

JC


Avatar
Baton Rouge
On Tue, 30 Nov 2010 17:51:08 +0100, "Jean-Claude"
wrote:

Bonjour,

sous Excel 2003, XP SP3, j'ai une macro VBA qui se connecte à un serveur
ayant une base SQL SERVER :

Set con = New ADODB.Connection
con.ConnectionString = "Provider=SQLOLEDB;Data Source=XXXXXX;
Initial Catalog=XXXXXX;User ID=XXXXXX;Password=XXXXXX;"
con.Open





Désolé de pourrir ton post, mais ne trouvant pas de reponse à ma
question, je te la pose vu que tu utilise excel et DB:
As tu deja été confronté au probleme du charset d'une base dbase lors
d'un import ? Ma base a été crée sous MSDOS et je l'importe sous excel
2003. Je trouve/sais pas l'option à mettre.

Merci d'avance et encore désolé.

--
Travailler plus pour gagner plus pour quoi faire ?
Pour finir par divorcer parce qu'on est pas souvent à la maison ou faire un malaise vagal et creuser le trou de la sécu ?
Avatar
michdenis
Bonjour,

Chaque base de donnée a son pilote ADO, et il faut adapter
la chaine de connexion.
Voici une adresse qui te permettra de connaitre les principales
de connexion ....

http://www.carlprothman.net/Default.aspx?tabid



MichD
--------------------------------------------
"Jean-Claude" a écrit dans le message de groupe de discussion : 4cf52b7d$0$32454$

Bonjour,

sous Excel 2003, XP SP3, j'ai une macro VBA qui se connecte à un serveur
ayant une base SQL SERVER :

Set con = New ADODB.Connection
con.ConnectionString = "Provider=SQLOLEDB;Data Source=XXXXXX;
Initial Catalog=XXXXXX;User ID=XXXXXX;Password=XXXXXX;"
con.Open

Tout fonctionne bien, je peux ensuite lire mes données et les traiter.
J'essaye maintenant de me connecter à une base DB2 sur un autre serveur
Windows Server 2008, mais impossible :

- sur le serveur, j'ai : dans "ODBC Data Source Administrator",
nom de la base = "DDD" et "IBM DB2 ODBC Driver - DB2"
- par mon VBA je tente de me connecter avec :
con.ConnectionString = "Driver={IBM DB2 ODBC DRIVER};DatabaseÝD;
Hostname=XXX.XXX.XXX.XXX;Protocol=TCPIP;Uid=UUU;Pwd=MMM;"
avec :
XXX.XXX.XXX.XXX = IP du serveur (si je mets le nom du serveur, pas
mieux)
et j'obtiens toujours :
"Erreur d'exécution -2147467259 (80004005), Erreur Automation"

J'ai essayé d'autre méthodes, mais en vain :

con.ConnectionString = "ProviderÛ2OLEDB;Network Transport
Library=TCPIP;
Network Address=XXX.XXX.XXX.XXX;Initial CatalogÝD;User
ID=UUU;Password=MMM;"

con.ConnectionString "Provider=IBMDADB2;DatabaseÝD;Hostname=XXX.XXX.XXX.XXX;
Protocol=TCPIP;Uid=UUU;Pwd=MMM;"

Une idée ? Ajouter un numéro de port ? Mais je le trouve où ?
Y a-t-il des restrictions pour accéder à ces bases ? Mais comment puis-je le
vérifier ?
(si je vais physiquement sur le serveur, je peux ouvrir une fenetre de
commande DB2 et consulter ainsi le contenu de la base ; bien sûr, ce que je
tente est pour consulter les bases de quelques dizaines de serveurs)
Et je n'arrive guère à comprendre ce que je peux trouver sur google.
Merci d'avance...

JC
Avatar
Jean-Claude
"isabelle" a écrit dans le message de news:
id3e8f$fug$
bonjour JC,

as tu essayé de le faire à la mimine avec l'enregistreur de macro ?

isabelle





Je pense que tu veux dire par la création d'une requête ? (menu
Données/Données externes/Création...)
Oui, mais :
- si je le fais directement sur le serveur, c'est ok (j'utilise alors une
data source ODBC qui existe déjà et qui a le nom de la base de données), je
peux extraire les données directement dans un tableau
- si je le fais sur un des postes du réseau local du serveur, c'est ok (même
remarque)
- mais si je le fais de mon poste, la data source n'existe pas, j'essaye
donc de la créer avec le gestionnaire ODBC, elle est bien créée (du moins
pas de message d'erreur), mais je n'arrive pas à l'utiliser dans ma création
de requête : message du genre "SQL30081N A communication error detected.
Communciation protocol being used "TCPIP" communication API being used
"SOCKETS" Location where the error was detected "" Communication function
detecting the error "connect" Protocol Specifi error "10061", "*", "*",
SQLSTATE001

A noter : dans mon tests sur le serveur, si j'ouvre le fichier Excel avec
notepad, je trouve bien des infos de connection (nom de la base, user,
password, paramètres DBALIAS, LONGDATACOMPAT...) que je retrouve dans le
lien de michdenis, mais je suis complètement perdu : j'avais l'habitude de
la "connectionstring" telle que je la présente dans mon post initial.

Je n'ai jamais eu ce problème pour ma connection à une base sur SQL SERVER,
alors je m'attendait à quelque chose d'aussi "simple".
J'espère que mon post ne dévit pas vers le hors charte...

JC
Avatar
Jean-Claude
"Baton Rouge" a écrit dans le message de news:

On Tue, 30 Nov 2010 17:51:08 +0100, "Jean-Claude"
wrote:

Bonjour,

sous Excel 2003, XP SP3, j'ai une macro VBA qui se connecte à un serveur
ayant une base SQL SERVER :

Set con = New ADODB.Connection
con.ConnectionString = "Provider=SQLOLEDB;Data Source=XXXXXX;
Initial Catalog=XXXXXX;User ID=XXXXXX;Password=XXXXXX;"
con.Open





Désolé de pourrir ton post, mais ne trouvant pas de reponse à ma
question, je te la pose vu que tu utilise excel et DB:
As tu deja été confronté au probleme du charset d'une base dbase lors
d'un import ? Ma base a été crée sous MSDOS et je l'importe sous excel
2003. Je trouve/sais pas l'option à mettre.

Merci d'avance et encore désolé.

--
Travailler plus pour gagner plus pour quoi faire ?
Pour finir par divorcer parce qu'on est pas souvent à la maison ou faire
un malaise vagal et creuser le trou de la sécu ?




Désolé mais je n'ai jamais eu ce type de pb, mais en même temps, je n'ai
jamais eu à lire une base dbase.
Mais voir peut-etre le lien de michdenis, ou aussi www.connectionstrings.com
où j'avais trouvé quelques infos.


JC