PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → CONNEXION BASE DE DONNEES ORACLE VIA
CONNEXION BASE DE DONNEES ORACLE VIA
Iniciado por Stéphane BOUVRET, 08,ene. 2019 13:51 - 3 respuestas
Miembro registrado
3 mensajes
Publicado el 08,enero 2019 - 13:51
Bonjour,

Nouveau utilisateur sous WINDEV, je tente d'apprivoiser le logiciel en attendant la formation. Je sollicite votre aide pour réaliser une connexion à une base de donnée ORACLE.

Mes lectures m'ont amené à comprendre qu'il existe 3 possibilités pour arriver à mes fins :

- L'accès Natif : option payante que je ne possède pas.
- L'ODBC : non recommandé pour des raisons de performance
- L'accès OLE DB.

Ma démarche :
- Création d'un nouveau projet (application Windows).
- Je vais directement dans le menu base de données.
- Et je choisis Oui, utiliser une base de données existante
- Importer la description depuis une base de données existante
- Je donne un nom à mon analyse
- Je choisis un type de base de données OLE DB
- Je choisis Oracle (Oracle Provider for OLE DB)
- Je nomme ma connexion
- Je renseigne l'adresse IP de mon serveur (j'ai également fait le test avec le nom DNS de la machine)
- Je renseigne un compte utilisateur existant (test également réalisé avec le compte system de oracle)
- Quand je clique pour continuer j'obtiens le message d'erreur suivant

Impossible de se connecter à 192.168.1.1
Erreur de l'accès OLE DB
Numéro d'erreur = 170124

Echec de l'ouverture de la connexion
Source de données <192.168.1.1>
Provider OLEDB <OraOLEDB.Oracle>

J'espère que vous pourrez m'aiguiller dans mes premiers pas sous Windev.

Merci de m'avoir lu.

NB : J'ai mis à jour le MDAC sur mon poste de travail. Le serveur de base de données est sur REDHAT.
Publicado el 08,enero 2019 - 15:36
Bonjour Stéphane

Vous avez bien tout compris sur les différents type de connexion.
Pour Ole DB il faut télécharger le driver correspondant (googlez "oracle ole db").
Une fois installé ce driver doit apparaître parmis les drivers ODBC.
Attention en 64 bits il faut lancer odbccad depuis le répertoire SysWow64.
Ensuite tentez une connexion depuis l'analyse puis utilisez HDécritConnexion ex:

bResultat=HDécritConnexion ("MaConnexion", gsBDDUser, gsBDDPassword, gsBDDServeur,gsBDDName, hOledbOracle, hOLectureEcriture, "")

Bon courage.
Miembro registrado
3 mensajes
Publicado el 09,enero 2019 - 16:14
Bonjour Michel,

Tout d'abord merci d'avoir pris le temps de me lire et merci pour votre réponse rapide.

Après m'être arraché les cheveux un bon nombre d'heures, j'ai procédé de la façon suivante :

- Désinstallation de l'ensemble des composants (serveur / client / répertoire) oracle sur ma machine de développement.
- Installation du client oracle 11g 64 bit avec le partie OLE DB.
- Création dans le Netmanager d'une résolution de nom qui de fait m'a créé mon fichier TNSNAMES.ora
- Création d'une connexion ODBC en 64 bit (donc à partir du répertoire System32 de Windows et non (SysWov64) qui gère la connexion 32 bit. avec le driver nommé : Oracle dans OraClient11g_home1 (SQORA32.DLL)
- J'ai lancé la création de mon analyse avec un type de base de données OLE.
- Quand je choisis Oracle (Oracle Provider for OLE DB), j'ai toujours cette erreur : 170124
- Je me suis rabattu sur l'option Accès ODBC par OLE et la tout fonctionne.

De ma compréhension :
- J'ai réussi à me connecter à ma base mais avec l'alternative la plus défavorable en terme de performance.(ODBC)
- Lorsque vous me parlez de odbccad. Dans votre esprit, la démarche était juste un contrôle de la présence du driver OLE db et je n'avais pas à créer de connexion ODBC ?
- Quand vous spécifiez le répertoire SysWow64, cela implique d'utiliser le odbcad 32 bit. Suis je dans l'erreur en utilisant le client oracle 64 bit ?

Merci encore pour aide.
Miembro registrado
3 mensajes
Publicado el 10,enero 2019 - 17:24
EUREKA,

J'ai trouvé mon erreur, dans la configuration OLE DB, la source de données attendue était le nom du service réseau et non le nom DNS du serveur.

Dans tous les cas merci pour votre aide précieuse Michel.

Cordialement.