Connection AS/400 - recordset ?

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