Télécharger le zip
Merci trop bien ta source, c ce que je cherche
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
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) ) )
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
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!
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
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 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!
Petite modification: Le code semble mieux fonctionner en mettant "Provider=oraoledb.oracle;"
Trop bien ! Je vais regarder ça rapidement. ça m'a l'air pas mal du tout. Je regarderais aussi pour le client Oracle Laurent
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
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!
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
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.
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 VBMERCI
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 873 992 membres 24 nouveaux aujourd'hui 16 151 membres club