VBA et chaîne de connection Oracle 8.1.7

Bonjour,

Sous Excel, j'utilise des macros pour faire des requêtes sur Oracle 8.1.7.
La chaîne de connection est
"Provider=MSDAORA. 1;Password=crmuser;User ID=crmuser;Data Source=OPARRSKX01.WORLD"

Le pb, c'est qu'apparamment un recordset construit avec cette connection ne permet pas de balayer (Rst.MoveLast) afin de définir le nombre d'enregistrement(s) qu'il contient.
Faut-il utiliser autre chose que MSDAORA pour que le MoveLast soit possible?

Merci de vos lumières :-)

A+,
Kobaya.

8 réponses

  1. je sais pas comment créer une connexion oracle vb6 ou avec vb.net..svp aidez moi
    1
    1. Je crois qu'il y a un malentendu: la chaine que utilise doit te permettre d'ouvrir la base de données et pas un recordset.

      je crois que tu devrais avoir

      set DB = opendatabase("Provider=MSDAORA. 1;Password=crmuser;User ID=crmuser;Data Source=OPARRSKX01.WORLD")
      set REC = DB.Openrecordset("SELECT ...;")
      if REC.recordcount > 0 then
      rec.movelast
      rec.movefirst
      end if

      La seule chose qui m'ennuye c'est que tu ne donnes pas le chemin à ta base de données alors qu'elle devrait se trouvée dans la chaine de connection...
      0
      1. en fait, j'ai ceci :

        Set objConn = New Connection
        objConn.ConnectionString = "Provider=MSDAORA. 1;Password=crmuser;User ID=crmuser;Data Source=OPARRSKX01.WORLD"

        ' ouverture de la connexion
        objConn.Open

        Set wbkClasseur = Workbooks.Add

        strSQL = "SELECT * FROM tfcrcrm ORDER BY nomfcr"
        Set objRS = New Recordset
        Application.StatusBar = "Lancer la requête..."
        objRS.Open strSQL, objConn

        et c'est là que j'ai un pb pour parcourir le rs...

        A+,
        Kobaya.
        0
        1. Oui évidement. Essaie voir:
          utilise DAO en référence dans ta macro (DAO360.DLL)

          dim objConn as new DAO.Database
          dim objRS as DAO.Recordset

          Set objConn = Opendatabase("Provider=MSDAORA. 1;Password=crmuser;User ID=crmuser;Data Source=OPARRSKX01.WORLD" )

          Set wbkClasseur = Workbooks.Add

          Set objRS = objConn.openrecordset("SELECT * FROM tfcrcrm ORDER BY nomfcr;") 'NE PAS OUBLIER LE ; EN FIN DE CHAINE

          Application.StatusBar = "Lancer la requête..."

          if objRS.recordcount>0 then 'Renvoie 1 si il y a des enregistrements
          objRS.movelast
          end if

          set objRS =nothing
          objConn.close
          set objConn=nothing

          Exécute la procédure pas-à-pas ^pour voir s'il n'y a pas de trucs qui cloches...
          0
          1. je m'aperçois que je fais tous mes SELECT sans le ; final, ce qui ne semble pas gêner Oracle...

            pour ce qui est de DAO360.DLL, je ne peux pas faire ce que je veux sur mon poste (je suis en entreprise, pas à la maison sur mon PC) et les DBA n'aiment pas trop qu'on "attaque leur bébé" par des macros...

            j'ai en référence Microsoft DAO 3.51 Object Library.

            A+,
            Kobaya.
            0
            1. La différence entre DAO 3.51 et DAO 3.6 est que cette dernière permet d'accéder au base de données type Access des versions supérieures à Access97. Donc normalement, ma routine doit pouvoir également fonctionner avec cette DLL.

              BAT
              0
              1. OK. Merci pour toutes ces précisions. Je vais voir ce que je peux faire.

                A+ et Joyeux Noël,
                Kobaya.
                0
                1. bonjour,
                  j'espère que vous m'aider à établir une connection entre access et excel et que vous me donner une explication claire en ce qui concerne
                  DAO et ADO.
                  -1