accéder à une base DB2 par VBA
Le
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Ý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
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

Poser une question


as tu essayé de le faire à la mimine avec l'enregistreur de macro ?
isabelle
Le 2010-11-30 11:51, Jean-Claude a écrit :
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 ?
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
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
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