VBA et chaîne de connection Oracle 8.1.7

Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   -  
 petititapawpa -
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. petititapawpa
     
    je sais pas comment créer une connexion oracle vb6 ou avec vb.net..svp aidez moi
    1
  2. xthorx_be Messages postés 149 Statut Membre 131
     
    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
  3. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    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
  4. xthorx_be Messages postés 149 Statut Membre 131
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    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
  7. xthorx_be Messages postés 149 Statut Membre 131
     
    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
  8. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    OK. Merci pour toutes ces précisions. Je vais voir ce que je peux faire.

    A+ et Joyeux Noël,
    Kobaya.
    0
  9. sousou
     
    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