CONNEXION ORACLE SANS ODBC

Messages postés
206
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
4 décembre 2007
- - Dernière réponse : bsidy1
Messages postés
21
Date d'inscription
mardi 29 août 2006
Statut
Membre
Dernière intervention
17 août 2012
- 29 août 2008 à 10:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/4859-connexion-oracle-sans-odbc

Afficher la suite 
leptidev
Messages postés
206
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
4 décembre 2007
-
Merci trop bien ta source, c ce que je cherche
momolescroc
Messages postés
3
Date d'inscription
dimanche 29 mars 2009
Statut
Membre
Dernière intervention
16 février 2006
-
Un grand merci pour ta source, mais je ne comprend pas bien ce qui est à ecrire pour "montnsname"?
Est-ce que je dois indiquer le chemin d'accé au tnsname de mon client oracle, ou bien le copier en local, ou alors autre chose?
Aussi, a aucun moment j'indique le nom du serveur distant sur lequel est installé ma base. Est ce que ton appli est prevu pour une base locale?
merci
lscherer
Messages postés
19
Date d'inscription
jeudi 21 mars 2002
Statut
Membre
Dernière intervention
3 novembre 2008
-
Le terme n'est pas approprié, en fait ce n'est pas le TNSNames qu'il faut que tu mettes, mais le nom de l'alias de base de données (celui que tu trouves dans le fichier tnsnames.ora, celui qui s'appelle monalias dans l'exemple ci-dessous), l'adresse IP de ton serveur distant est dans Host, et le nom de ton instance de base de données est dans SID =

tu peux très bien attaquer une base locale, il suffit (pour une personnal oracle) de remplacer la ligne par
objADO.Open "Provider=MSDAORA.1;Password=MonMotDePasse;User ID=MonUser"
En fait on ne spécifie pas le Data Source (alias de Bdd)

Fichier tnsnames.ora dans {ORACLE_HOME}\Network\Admin\

monalias.world (DESCRIPTION
(ADDRESS_LIST (ADDRESS
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = 172.16.63.190)
(Port = 1521)
)
(ADDRESS (COMMUNITY tcp.world)
(PROTOCOL = TCP)
(Host = 172.16.63.190)
(Port = 1526)
)
)
(CONNECT_DATA (SID mabase)
)
)
acecel
Messages postés
140
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
14 octobre 2006
-
Je me suis permis de modifier/simplifier ta source selon mes besoins.
celle-ci permet maintenant de se connecter soit à une base Access, soit une autre base.

j'ai créé un type dans mon module normal :


********************************************************
Type ParamètreConnexionADODB
Path As String
Type As String
Provider As String
User As String
Password As String
DataSource As String
End Type
Public pdbParamètreConnexion As ParamètreConnexionADODB
********************************************************

pdbParamètreConnexion contient donc tous les paramètres de connexion (qui sont définis dans le programme, et enregistrés dans la base de registre)

ce module de classe permet juste de renvoyer un recordset, ou exécuter une requete simple.

dans le programme il suffit de déclarer la base :
********************************************************
Public pdbArticle As cDataBase
Set pdbArticle = New cDataBase
pdbArticle.Connexion
********************************************************

et les recordsets :
********************************************************
Dim xrec1 As New ADODB.Recordset
set xrec1 = pdbArticle.OpenRecordset ("Select * from ..")
********************************************************

et pour fermer la base :
********************************************************
pdbArticle.Fermeture
********************************************************







Code à copier dans le module de classe : (cDataBase.cls)


Option Explicit

' /// Variables pour la Connexion ADODB /////////////////////////////////////////////////////////////////////////////////////////
Private pdbConnection As New ADODB.Connection
Private pdbRecordsetADO As New ADODB.Recordset


' /// Ouverture de la Base de Données /////////////////////////////////////////////////////////////////////////

Public Sub Connexion(dbPath As String)
On Error GoTo Connexion_Error

Select Case pdbParamètreConnexion.Type
Case "ACCESS"
pdbConnection.Provider = pdbParamètreConnexion.Provider
pdbConnection.ConnectionString = dbPath
pdbConnection.Open
Case "AUTRE"
pdbConnection.Open "Provider=" & pdbParamètreConnexion.Provider & ";Password=" & pdbParamètreConnexion.Password & ";User ID=" & pdbParamètreConnexion.User & ";Data Source" & pdbParamètreConnexion.DataSource
End Select

On Error GoTo 0
Exit Sub

Connexion_Error:

MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure Connexion dans Module de classe cDataBase", vbCritical
End Sub


' /// Envoi du RecordSet //////////////////////////////////////////////////////////////////////////////////////

Public Function OpenRecordSet(dbSQL As String, Optional dbOption) As ADODB.Recordset
On Error GoTo OpenRecordSet_Error

If dbSQL <> "" Then
pdbRecordsetADO.CursorLocation = adUseClient
pdbRecordsetADO.CursorType = adOpenDynamic
pdbRecordsetADO.LockType = adLockOptimistic
pdbRecordsetADO.Open dbSQL, pdbConnection
Set OpenRecordSet = pdbRecordsetADO
Set pdbRecordsetADO = Nothing
End If


On Error GoTo 0
Exit Function

OpenRecordSet_Error:

MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure OpenRecordSet dans Module de classe cDataBase", vbCritical
End Function

' /// Exécution d'une Requête SQL /////////////////////////////////////////////////////////////////////////////

Public Sub Execute(xSQL As String)
On Error GoTo Execute_Error

pdbConnection.Execute xSQL

On Error GoTo 0
Exit Sub

Execute_Error:

MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure Execute dans Module de classe cDataBase", vbCritical
End Sub



' /// Fermeture de la connexion avec la Base de Données ///////////////////////////////////////////////////////

Public Sub Fermeture()
On Error GoTo Fermeture_Error

pdbConnection.Close
Set pdbConnection = Nothing

On Error GoTo 0
Exit Sub

Fermeture_Error:

MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure Fermeture dans Module de classe cDataBase", vbCritical
End Sub
tdeanaz
Messages postés
4
Date d'inscription
mercredi 2 mai 2007
Statut
Membre
Dernière intervention
23 mai 2007
-
Bonjour,

Je cherche à utiliser le code utilisé ici, mais sur un PC sur lequel il n'y a pas de fichier tnsnames.ora. Est-il possible d'inclure dans le code les informations (IP, SID, etc..) nécessaires à l'établissement de la connexion?
MErci!