leptidev
Messages postés206Date d'inscriptionmercredi 30 janvier 2002StatutMembreDernière intervention 4 décembre 2007
-
24 oct. 2002 à 12:10
bsidy1
Messages postés20Date d'inscriptionmardi 29 août 2006StatutMembreDernière intervention17 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.
bsidy1
Messages postés20Date d'inscriptionmardi 29 août 2006StatutMembreDernière intervention17 août 2012 29 août 2008 à 10:27
JE TROUVE VRAIMENT TRES BON CE CODE
CEPENDANT JE DEPLORE QU'ON SOIT TENU OBLIGE D'AVOIR LE CLIENT SUR LA MACHINE POUR QUE LES CHOSES TOURNENT. A DIEU LA PORTABILITE DE VB
MERCI
cs_jmgaudel
Messages postés1Date d'inscriptionlundi 6 juin 2005StatutMembreDernière intervention12 juin 2007 12 juin 2007 à 15:18
Bonjour,
je développe une appli sous access en VBA qui doit permettre de se connecter à une base Oracle distante à partir de plusieurs postes. j'ai l'impression que ce code pourrait m'aider, cependant n'ayant pas VB d'installé sur mon PC, serait-il possible d'avoir une copie du code en ".txt" sur l'article?
Merci d'avance.
lscherer
Messages postés19Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention 3 novembre 2008 23 mai 2007 à 17:15
Pour le port, celui définit par défaut pour Oracle est le plus souvent 1521, sinon on trouve régulièrement aussi 1526
Toutes ces informations peuvent t'être founies par ton admin de base de données
tdeanaz
Messages postés4Date d'inscriptionmercredi 2 mai 2007StatutMembreDernière intervention23 mai 2007 23 mai 2007 à 14:55
Pour le moment ce code ne fonctionne que lorsqu'un client Oracle est installé sur la machine client.
De plus, dans le code que tu fournis, tu n'as pas entré le port de connexion au serveur.
Pour finir, le rouge n'apparait visiblement pas :)
Bon courage!
ouzaamedali
Messages postés10Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention15 février 2012 23 mai 2007 à 14:52
Merci pour tous les informations diffusées sur ce forum car elles sont capitales et utiles pour effectuer la première étape de mon stage.
Reste que je n'arrive toujours pas à me connecter à ma base de données oracle à travers le code si dessus, pouvez vous m?expliquer que dois je remplir à ce code, je vous montre ce que j'ai modifier en rouge:
Private Sub CommandButton1_Click()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As ADODB.Command
Set conn = New ADODB.Connection
Set sql = New ADODB.Command
Set rs = New ADODB.Recordset
TNS_INFO = "(DESCRIPTION=" & _
"(ADDRESS_LIST=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=192.168.0.32)" & _
"(PORT=entrer_ici_le_port)))" & _
"(CONNECT_DATA=(SID= X3)" & _
"(SERVER= controler)))"
conn.ConnectionString = "Provider=msdaora;" & _
"Data Source=" & TNS_INFO & ";" & _
"user id= GC;" & _
"password=tiger"
Debug.Print conn.ConnectionString
conn.Open
End Sub
lscherer
Messages postés19Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention 3 novembre 2008 4 mai 2007 à 12:05
Trop bien !
Je vais regarder ça rapidement.
ça m'a l'air pas mal du tout.
Je regarderais aussi pour le client Oracle
Laurent
tdeanaz
Messages postés4Date d'inscriptionmercredi 2 mai 2007StatutMembreDernière intervention23 mai 2007 4 mai 2007 à 10:31
Petite modification:
Le code semble mieux fonctionner en mettant "Provider=oraoledb.oracle;"
tdeanaz
Messages postés4Date d'inscriptionmercredi 2 mai 2007StatutMembreDernière intervention23 mai 2007 3 mai 2007 à 09:53
Bonjour,
Après quelques essais, j'ai trouvé un moyen de pouvoir au moins s'affranchir du fichier tnsnames.ora, la nécessité ou non d'un client Oracle n'a pas encore été testée...
Le code que j'ai pu trouver:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As ADODB.Command
Set conn = New ADODB.Connection
Set sql = New ADODB.Command
Set rs = New ADODB.Recordset
lscherer
Messages postés19Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention 3 novembre 2008 2 mai 2007 à 18:24
Bonjour,
Non désole, mais ce source ne peut se dispenser d'avoir un client Oracle Installé ou du moins je n'en connais pas la méthode. Je sais que java n'en n'a pas besoin, mais dans notre cas, je rappel que nous sommes en VB...
Bon courage
Laurent
tdeanaz
Messages postés4Date d'inscriptionmercredi 2 mai 2007StatutMembreDernière intervention23 mai 2007 2 mai 2007 à 17:58
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!
acecel
Messages postés140Date d'inscriptionjeudi 6 mai 2004StatutMembreDernière intervention14 octobre 2006 12 oct. 2005 à 14:36
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
lscherer
Messages postés19Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention 3 novembre 2008 18 mai 2005 à 19:34
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\
momolescroc
Messages postés3Date d'inscriptiondimanche 29 mars 2009StatutMembreDernière intervention16 février 2006 18 mai 2005 à 10:57
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
leptidev
Messages postés206Date d'inscriptionmercredi 30 janvier 2002StatutMembreDernière intervention 4 décembre 2007 24 oct. 2002 à 12:10
29 août 2008 à 10:27
CEPENDANT JE DEPLORE QU'ON SOIT TENU OBLIGE D'AVOIR LE CLIENT SUR LA MACHINE POUR QUE LES CHOSES TOURNENT. A DIEU LA PORTABILITE DE VB
MERCI
12 juin 2007 à 15:18
je développe une appli sous access en VBA qui doit permettre de se connecter à une base Oracle distante à partir de plusieurs postes. j'ai l'impression que ce code pourrait m'aider, cependant n'ayant pas VB d'installé sur mon PC, serait-il possible d'avoir une copie du code en ".txt" sur l'article?
Merci d'avance.
23 mai 2007 à 17:15
Toutes ces informations peuvent t'être founies par ton admin de base de données
23 mai 2007 à 14:55
De plus, dans le code que tu fournis, tu n'as pas entré le port de connexion au serveur.
Pour finir, le rouge n'apparait visiblement pas :)
Bon courage!
23 mai 2007 à 14:52
Reste que je n'arrive toujours pas à me connecter à ma base de données oracle à travers le code si dessus, pouvez vous m?expliquer que dois je remplir à ce code, je vous montre ce que j'ai modifier en rouge:
Private Sub CommandButton1_Click()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As ADODB.Command
Set conn = New ADODB.Connection
Set sql = New ADODB.Command
Set rs = New ADODB.Recordset
TNS_INFO = "(DESCRIPTION=" & _
"(ADDRESS_LIST=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=192.168.0.32)" & _
"(PORT=entrer_ici_le_port)))" & _
"(CONNECT_DATA=(SID= X3)" & _
"(SERVER= controler)))"
conn.ConnectionString = "Provider=msdaora;" & _
"Data Source=" & TNS_INFO & ";" & _
"user id= GC;" & _
"password=tiger"
Debug.Print conn.ConnectionString
conn.Open
End Sub
4 mai 2007 à 12:05
Je vais regarder ça rapidement.
ça m'a l'air pas mal du tout.
Je regarderais aussi pour le client Oracle
Laurent
4 mai 2007 à 10:31
Le code semble mieux fonctionner en mettant "Provider=oraoledb.oracle;"
3 mai 2007 à 09:53
Après quelques essais, j'ai trouvé un moyen de pouvoir au moins s'affranchir du fichier tnsnames.ora, la nécessité ou non d'un client Oracle n'a pas encore été testée...
Le code que j'ai pu trouver:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As ADODB.Command
Set conn = New ADODB.Connection
Set sql = New ADODB.Command
Set rs = New ADODB.Recordset
TNS_INFO = "(DESCRIPTION=" & _
"(ADDRESS_LIST=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=entrer_ici_l_Adresse_IP)" & _
"(PORT=entrer_ici_le_port)))" & _
"(CONNECT_DATA=(SID=entrer_ici_le_SID_de_la_base)" & _
"(SERVER=DEDICATED)))"
conn.ConnectionString = "Provider=msdaora;" & _
"Data Source=" & TNS_INFO & ";" & _
"user id=entrer_ici_le_user_id;" & _
"password=entrer_ici_le_mdp"
Debug.Print conn.ConnectionString
conn.Open
Merci pour les encouragements!
2 mai 2007 à 18:24
Non désole, mais ce source ne peut se dispenser d'avoir un client Oracle Installé ou du moins je n'en connais pas la méthode. Je sais que java n'en n'a pas besoin, mais dans notre cas, je rappel que nous sommes en VB...
Bon courage
Laurent
2 mai 2007 à 17:58
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!
12 oct. 2005 à 14:36
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
18 mai 2005 à 19:34
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)
)
)
18 mai 2005 à 10:57
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
24 oct. 2002 à 12:10