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

  1. 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
  2. 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
  3. 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
    1. 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