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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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@a> a écrit dans le message de news:eazh86$8EHA.2156@TK2MSFTNGP10.phx.gbl...
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.
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.
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
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
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
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.
Merci pour l'info que je vais essayer de suite après quelques jours de
repos.
"Pierre CFI [mvp]" <XXX_pierresalaun@aol.com> a écrit dans le message de
news:OJ08PdA9EHA.960@TK2MSFTNGP11.phx.gbl...
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@a> a écrit dans le message de
news:eazh86$8EHA.2156@TK2MSFTNGP10.phx.gbl...
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.
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.