Rechercher : dans
Par :

VBA et chaîne de connection Oracle 8.1.7

Dernière réponse le 17 jui 2008 à 21:54:20 Kobaya, le 23 déc 2004 à 14:45:32 
 Signaler ce message aux modérateurs

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.

1

xthorx_be, le 23 déc 2004 à 16:23:50

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

Répondre à xthorx_be

2

Kobaya, le 23 déc 2004 à 16:44:17

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.

Répondre à Kobaya

3

xthorx_be, le 23 déc 2004 à 17:02:29

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

Répondre à xthorx_be

4

Kobaya, le 23 déc 2004 à 17:39:14

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.

Répondre à Kobaya

5

xthorx_be, le 23 déc 2004 à 20:20:22

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

Répondre à xthorx_be

6

Kobaya, le 24 déc 2004 à 12:03:21

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

A+ et Joyeux Noël,
Kobaya.

Répondre à Kobaya

7

sousou, le 7 fév 2008 à 17:38:53

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.

Répondre à sousou

8

 petititapawpa, le 17 jui 2008 à 21:54:20
  • +1

Je sais pas comment créer une connexion oracle vb6 ou avec vb.net..svp aidez moi

Répondre à petititapawpa
Collection CommentÇaMarche.net