Connection AS/400 - recordset ?
jean-luc carnez
-
NATOU2 -
NATOU2 -
bonjour,
Je cherche à augmenter la portabilité des mes applications ACCESS en m'affranchissant totalement des sources de données ODBC et de la configuration via Clent Access;
Je suis parvenu (avec bien du mal !) à établir une connection sur la bibliothèque AS400 que je souhaitais, et à y lister tous mes fichiers bases de données DB2/400.
Mais pas moyen de trouver la syntaxe ou la méthode pour extraire les données de ces fichiers. Message : "Erreur inconnue"
Quelqu'un aurait-il déjà souffert avant moi ?
D'avance, merci
Je cherche à augmenter la portabilité des mes applications ACCESS en m'affranchissant totalement des sources de données ODBC et de la configuration via Clent Access;
Je suis parvenu (avec bien du mal !) à établir une connection sur la bibliothèque AS400 que je souhaitais, et à y lister tous mes fichiers bases de données DB2/400.
Mais pas moyen de trouver la syntaxe ou la méthode pour extraire les données de ces fichiers. Message : "Erreur inconnue"
Quelqu'un aurait-il déjà souffert avant moi ?
D'avance, merci
3 réponses
-
Bonjour!
Je vois que ta demande est restée sans réponse, et je viens de faire la meme :-/
Si tu as trouvé, ca me dépannerait bien si tu voulais m'en faire profiter! :)
merci
Cédric -
je rencontre le même problème je n'arrive même pas à configurer ODBC pour me connecter à la bonne bibliothèque.
Vous pouvez m'explique comment avez vous fait.
merci
Oana -
bonjour,
depuis, de l'eau a coulé sous les ponts, et je manipule tous les jours des connexions à nos deux AS400 sans ODBC, ainsi d'ailleurs qu'à d'autres bases (SQL entre autres).
Voici comment faire :
1- il faut créer un objet CONNEXION:
Set Cnn = CreateObject("ADODB.connection")
Cnn.Open "provider=IBMDA400;data source=agrosys", "", ""
où agrosys est ici le nom de l'AS400
2- il faut ensuite créer un objet RECORDSET :
Set Rs = CreateObject("ADODB.recordset")
Set Rs.ActiveConnection = Cnn
il faut enfin ouvrir le RECORDSET
Rs.Open strsql
On peut tester l'état de la connexion et du recordset
if cnn.state = 1 then cnn.close
if rs.state = 1 then rs.close
il suffit, en préalable à l'ouverture du recordset, de définir la chaîne strsql, qui, comme vous l'aurez deviné, est une requête sur des fichiers AS400, du style :
strsql = " " & _
" select " & _
" agfic001.staclfpf.nclist, " & _
" substring(agcgf001.enccltlf.encaen, 1 , 1)," & _
" substring(agcgf001.enccltlf.encaen, 2 , 1)," & _
" substring(agcgf001.enccltlf.encaen, 3 , 1)," & _
" agfic001.clientpf.cpaycl, " & _
" agfic001.clientpf.collcl, " & _
" agfic001.clientpf.cen2cl, " & _
" agfic001.clientlf.raiscl, " & _
" agfic001.clientpf.rdoccl, " & _
" agfic001.clientpf.villcl, " & _
" agcgf001.enccltlf.mtaben " & _
" from " & _
" (((agfic001.staclfpf left join agcgf001.enccltpf on agfic001.staclfpf.nclist = agcgf001.enccltpf.nclfen)" & _
" left join agfic001.clientpf on agfic001.staclfpf.nclist = agfic001.clientpf.nclicl) " & _
" left join agfic001.clientlf on agfic001.clientpf.cen2cl = agfic001.clientlf.nclicl)" & _
" left join agcgf001.enccltlf on agcgf001.enccltpf.ncleen = agcgf001.enccltlf.nclfen " & _
" where (agfic001.staclfpf.dtcast >= " & debut & " And agfic001.staclfpf.dtcast <= " & fin & ")" & _
" order by agfic001.staclfpf.nclist"
ATTENTION !!!!
Vous constaterez que le plus difficile, ce n'est pas de se connecter à l'AS400, sans lien ODBC, (ça marche tout seul !), mais c'est la syntaxe des requêtes !!
Bon courage.-
Bonjour,
J'ai bien essayer ta méthode qui m'intéresse fortement, il parraît que le provider IBMDA400 est beaucoup plus performant, ceci dit moi j'ai un message d'erreur. Pourrais-tu m'aider stp :
Code :
Set cnn = CreateObject("ADODB.connection")
cnn.Open "Provider=IBMDA400;Data Source=HEPSTG1;Defaut collection=ECFH0"
MsgBox cnn.State
L'erreur se produite à l'ouverture de la connection :
Message "Erreur d'exécution '-2147217887(80040e21)' Erreur Automation"
Merci de ton aide
-