Connection AS/400 - recordset ?

jean-luc carnez -  
 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

3 réponses

ced1er Messages postés 5 Statut Membre
 
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
0
oana
 
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
0
Carnez Jean-Luc
 
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.
0
NATOU2
 
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
0