Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

connection ADODB

3 réponses
Avatar
PG49
Bonjour à toutes et à tous

En essayant d'être clair :

J'ai des fonctions et des procédures qui font appels à des informations
issues d'une base de données sur un serveur sous linux. Pour récupérer ces
informations chaqu'une des procédures ou fonctions fait appel à la procédure
ci dessous pour créer la connexion avec la base de données.

Sub Forp()
Set rltat = CreateObject("ADODB.Connection")
rltat.Open "Provider=MSDASQL.1;" & _
"Data Source=PostgreSQL;" & _
"User Id=aaaa;" & _
"Password=aaaa"
Set enrgt = CreateObject("ADODB.RecordSet")
End Sub

Problème :
A chaque lancement d'une procédure ou d'une fonction (c'est à dire souvent
car dans ma feuille Excel mes formules de calculs utilisent les fonctions)
une nouvelle connexion est créé sur le serveur linux ce qui ralentit
énormément le serveur lorsque trop de connections sont créées.
Malgré plusieurs essais je n'arrive pas à savoir à quel moment la connexion
est rompue (automatique à la fin de la fonction, automatique après un
certain délai d'inactivité ou autre ???)

J'aurais donc voulu lancer la connexion une seule fois (j'ai essayé avec
public sub mais je ne dois pas l'utiliser correctement car cela ne semble
pas fonctionner) et/ou tester si la connexion existe déjà pour ne pas la
relancer, et/ou la relancer si elle s'arrête automatiquement après un délai
d'inactivité. Ou autre suggestion.

MERCI de votre aide déjà apportée (sur d'autres questions) et celle à venir.

3 réponses

Avatar
Pierre CFI [mvp]
bonjour
dans un module classique tu déclares public tes variables objet

Public rltat as Object
.... etc
puis tu peux ouvrir ta connexion dans le module du classeur à l'evenemnt open
aprés, et bien tu ouvres des recordset sur cette connection
oublie pas dans l'évenement unload du cl de fermer la connexion et de mettre tes variables object à Nothing

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"PG49" a écrit dans le message de news:eazh86$
Bonjour à toutes et à tous

En essayant d'être clair :

J'ai des fonctions et des procédures qui font appels à des informations
issues d'une base de données sur un serveur sous linux. Pour récupérer ces
informations chaqu'une des procédures ou fonctions fait appel à la procédure
ci dessous pour créer la connexion avec la base de données.

Sub Forp()
Set rltat = CreateObject("ADODB.Connection")
rltat.Open "Provider=MSDASQL.1;" & _
"Data Source=PostgreSQL;" & _
"User Idªaa;" & _
"Passwordªaa"
Set enrgt = CreateObject("ADODB.RecordSet")
End Sub

Problème :
A chaque lancement d'une procédure ou d'une fonction (c'est à dire souvent
car dans ma feuille Excel mes formules de calculs utilisent les fonctions)
une nouvelle connexion est créé sur le serveur linux ce qui ralentit
énormément le serveur lorsque trop de connections sont créées.
Malgré plusieurs essais je n'arrive pas à savoir à quel moment la connexion
est rompue (automatique à la fin de la fonction, automatique après un
certain délai d'inactivité ou autre ???)

J'aurais donc voulu lancer la connexion une seule fois (j'ai essayé avec
public sub mais je ne dois pas l'utiliser correctement car cela ne semble
pas fonctionner) et/ou tester si la connexion existe déjà pour ne pas la
relancer, et/ou la relancer si elle s'arrête automatiquement après un délai
d'inactivité. Ou autre suggestion.

MERCI de votre aide déjà apportée (sur d'autres questions) et celle à venir.




Avatar
Thierry Euzenot
Voilà comment je fais personnellement pour une base de donnée Accès :
En espérant que cela puisse t'aider :o)

Thierry

**************************
Création de la connexion
**************************
'Définit le nom de la connexion
Public Conn As ADODB.Connection
'Définit le nom de la requête
Public Rst As ADODB.Recordset

Sub OuvrirConnexionVersBaseDeDonnées()
'Procédure de connexion à la BDD

On Error Resume Next
Set Conn = New ADODB.Connection
With Conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers art_st2e.mdb
.Open Feuil9.Range("B4")
End With
If Err <> 0 Then
Message = MsgBox("Erreur N°" & Err.Number & " : " & Err.Description)
Exit Sub
End If

End Sub

**************************
Test de la connexion (à mettre dans les macros utilisant les accès à la
base)
**************************
'teste l'état de la connexion et si elle est fermée appelle la routine de
connexion
On Error Resume Next
FlagConn = Conn.State
If Err <> 0 Then
Call OuvrirConnexionVersBaseDeDonnées
End If
Avatar
PG49
Merci pour l'info que je vais essayer de suite après quelques jours de
repos.


"Pierre CFI [mvp]" a écrit dans le message de
news:
bonjour
dans un module classique tu déclares public tes variables objet

Public rltat as Object
.... etc
puis tu peux ouvrir ta connexion dans le module du classeur à l'evenemnt
open

aprés, et bien tu ouvres des recordset sur cette connection
oublie pas dans l'évenement unload du cl de fermer la connexion et de
mettre tes variables object à Nothing


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"PG49" a écrit dans le message de
news:eazh86$

Bonjour à toutes et à tous

En essayant d'être clair :

J'ai des fonctions et des procédures qui font appels à des informations
issues d'une base de données sur un serveur sous linux. Pour récupérer
ces


informations chaqu'une des procédures ou fonctions fait appel à la
procédure


ci dessous pour créer la connexion avec la base de données.

Sub Forp()
Set rltat = CreateObject("ADODB.Connection")
rltat.Open "Provider=MSDASQL.1;" & _
"Data Source=PostgreSQL;" & _
"User Idªaa;" & _
"Passwordªaa"
Set enrgt = CreateObject("ADODB.RecordSet")
End Sub

Problème :
A chaque lancement d'une procédure ou d'une fonction (c'est à dire
souvent


car dans ma feuille Excel mes formules de calculs utilisent les
fonctions)


une nouvelle connexion est créé sur le serveur linux ce qui ralentit
énormément le serveur lorsque trop de connections sont créées.
Malgré plusieurs essais je n'arrive pas à savoir à quel moment la
connexion


est rompue (automatique à la fin de la fonction, automatique après un
certain délai d'inactivité ou autre ???)

J'aurais donc voulu lancer la connexion une seule fois (j'ai essayé
avec


public sub mais je ne dois pas l'utiliser correctement car cela ne
semble


pas fonctionner) et/ou tester si la connexion existe déjà pour ne pas la
relancer, et/ou la relancer si elle s'arrête automatiquement après un
délai


d'inactivité. Ou autre suggestion.

MERCI de votre aide déjà apportée (sur d'autres questions) et celle à
venir.