Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
[Petit problene avec le pave tactile du portable :D]
Si tu utilises souvent la meme procedure, isoles cette partie du code pour
en faire une procedure.
Ensuite, quand tu en as besoin dans une procedure quelconque , fais un
Call TaProcedure() pour l'appeler.
Oublies pas qu'une fonction renvoie une valeur, et une procedure non.
Donc, je pense que c'est mieux d'en faire une proecdure.
"Thierry Euzenot" escreveu na mensagem
news:Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
viaVBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont
je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car
si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
[Petit problene avec le pave tactile du portable :D]
Si tu utilises souvent la meme procedure, isoles cette partie du code pour
en faire une procedure.
Ensuite, quand tu en as besoin dans une procedure quelconque , fais un
Call TaProcedure() pour l'appeler.
Oublies pas qu'une fonction renvoie une valeur, et une procedure non.
Donc, je pense que c'est mieux d'en faire une proecdure.
"Thierry Euzenot" <te.st2e@free.fr> escreveu na mensagem
news:O1NGVJQOEHA.3712@TK2MSFTNGP10.phx.gbl...
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont
je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car
si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
[Petit problene avec le pave tactile du portable :D]
Si tu utilises souvent la meme procedure, isoles cette partie du code pour
en faire une procedure.
Ensuite, quand tu en as besoin dans une procedure quelconque , fais un
Call TaProcedure() pour l'appeler.
Oublies pas qu'une fonction renvoie une valeur, et une procedure non.
Donc, je pense que c'est mieux d'en faire une proecdure.
"Thierry Euzenot" escreveu na mensagem
news:Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
viaVBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont
je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car
si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Bonjour Tnierry,
en supplément à ce que Himself énonce,
Tu peux dans le haut d'un module standard, déclaré des variables "public"
Public Conn As ADODB.Connection
Public Rst As ADODB.Recordset
Tu peux même ajouter des "Const Public" contenant la chaine de caractère
de tes requêtes si ces dernières sont "fixes"
Public Const Rsql_1= "SELECT DISTINCT articles.[artcode],
articles.[artdesig] FROM articles;"
Public Const Rsql_2= "Select ...."
Dans le ThisWorkbook de ton classeur :
'-------------------
Private Sub Workbook_Open()
OuvrirConnexionVersBaseDeDonnées
End Sub
'-------------------
Dans un module Standard :
'--------------------
Sub OuvrirConnexionVersBaseDeDonnées
With conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
End Sub
'--------------------
Et dans une procédure quelconque lorsque tu auras besoin d'ouvrir un
recordset :
'---------------------
Sub MaSub()
Rst.Open Rsql_1, Conn adOpenKeyset
' Traitement du recordset
Rst.close
End sub
'---------------------
Et pour terminer en beauté : Dans le ThisWorkbook de ton classeur :
'------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Rst = Nothing, Set Conn = Nothing
End Sub
'------------------
Salutations!
"Thierry Euzenot" a écrit dans le message de
news:
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Bonjour Tnierry,
en supplément à ce que Himself énonce,
Tu peux dans le haut d'un module standard, déclaré des variables "public"
Public Conn As ADODB.Connection
Public Rst As ADODB.Recordset
Tu peux même ajouter des "Const Public" contenant la chaine de caractère
de tes requêtes si ces dernières sont "fixes"
Public Const Rsql_1= "SELECT DISTINCT articles.[artcode],
articles.[artdesig] FROM articles;"
Public Const Rsql_2= "Select ...."
Dans le ThisWorkbook de ton classeur :
'-------------------
Private Sub Workbook_Open()
OuvrirConnexionVersBaseDeDonnées
End Sub
'-------------------
Dans un module Standard :
'--------------------
Sub OuvrirConnexionVersBaseDeDonnées
With conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
End Sub
'--------------------
Et dans une procédure quelconque lorsque tu auras besoin d'ouvrir un
recordset :
'---------------------
Sub MaSub()
Rst.Open Rsql_1, Conn adOpenKeyset
' Traitement du recordset
Rst.close
End sub
'---------------------
Et pour terminer en beauté : Dans le ThisWorkbook de ton classeur :
'------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Rst = Nothing, Set Conn = Nothing
End Sub
'------------------
Salutations!
"Thierry Euzenot" <te.st2e@free.fr> a écrit dans le message de
news:O1NGVJQOEHA.3712@TK2MSFTNGP10.phx.gbl...
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Bonjour Tnierry,
en supplément à ce que Himself énonce,
Tu peux dans le haut d'un module standard, déclaré des variables "public"
Public Conn As ADODB.Connection
Public Rst As ADODB.Recordset
Tu peux même ajouter des "Const Public" contenant la chaine de caractère
de tes requêtes si ces dernières sont "fixes"
Public Const Rsql_1= "SELECT DISTINCT articles.[artcode],
articles.[artdesig] FROM articles;"
Public Const Rsql_2= "Select ...."
Dans le ThisWorkbook de ton classeur :
'-------------------
Private Sub Workbook_Open()
OuvrirConnexionVersBaseDeDonnées
End Sub
'-------------------
Dans un module Standard :
'--------------------
Sub OuvrirConnexionVersBaseDeDonnées
With conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
End Sub
'--------------------
Et dans une procédure quelconque lorsque tu auras besoin d'ouvrir un
recordset :
'---------------------
Sub MaSub()
Rst.Open Rsql_1, Conn adOpenKeyset
' Traitement du recordset
Rst.close
End sub
'---------------------
Et pour terminer en beauté : Dans le ThisWorkbook de ton classeur :
'------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Rst = Nothing, Set Conn = Nothing
End Sub
'------------------
Salutations!
"Thierry Euzenot" a écrit dans le message de
news:
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Bonjour Tnierry,
en supplément à ce que Himself énonce,
Tu peux dans le haut d'un module standard, déclaré des variables "public"
Public Conn As ADODB.Connection
Public Rst As ADODB.Recordset
Tu peux même ajouter des "Const Public" contenant la chaine de caractère
de tes requêtes si ces dernières sont "fixes"
Public Const Rsql_1= "SELECT DISTINCT articles.[artcode],
articles.[artdesig] FROM articles;"
Public Const Rsql_2= "Select ...."
Dans le ThisWorkbook de ton classeur :
'-------------------
Private Sub Workbook_Open()
OuvrirConnexionVersBaseDeDonnées
End Sub
'-------------------
Dans un module Standard :
'--------------------
Sub OuvrirConnexionVersBaseDeDonnées
With conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
End Sub
'--------------------
Et dans une procédure quelconque lorsque tu auras besoin d'ouvrir un
recordset :
'---------------------
Sub MaSub()
Rst.Open Rsql_1, Conn adOpenKeyset
' Traitement du recordset
Rst.close
End sub
'---------------------
Et pour terminer en beauté : Dans le ThisWorkbook de ton classeur :
'------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Rst = Nothing, Set Conn = Nothing
End Sub
'------------------
Salutations!
"Thierry Euzenot" a écrit dans le message de
news:
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Bonjour Tnierry,
en supplément à ce que Himself énonce,
Tu peux dans le haut d'un module standard, déclaré des variables "public"
Public Conn As ADODB.Connection
Public Rst As ADODB.Recordset
Tu peux même ajouter des "Const Public" contenant la chaine de caractère
de tes requêtes si ces dernières sont "fixes"
Public Const Rsql_1= "SELECT DISTINCT articles.[artcode],
articles.[artdesig] FROM articles;"
Public Const Rsql_2= "Select ...."
Dans le ThisWorkbook de ton classeur :
'-------------------
Private Sub Workbook_Open()
OuvrirConnexionVersBaseDeDonnées
End Sub
'-------------------
Dans un module Standard :
'--------------------
Sub OuvrirConnexionVersBaseDeDonnées
With conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
End Sub
'--------------------
Et dans une procédure quelconque lorsque tu auras besoin d'ouvrir un
recordset :
'---------------------
Sub MaSub()
Rst.Open Rsql_1, Conn adOpenKeyset
' Traitement du recordset
Rst.close
End sub
'---------------------
Et pour terminer en beauté : Dans le ThisWorkbook de ton classeur :
'------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Rst = Nothing, Set Conn = Nothing
End Sub
'------------------
Salutations!
"Thierry Euzenot" <te.st2e@free.fr> a écrit dans le message de
news:O1NGVJQOEHA.3712@TK2MSFTNGP10.phx.gbl...
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Bonjour Tnierry,
en supplément à ce que Himself énonce,
Tu peux dans le haut d'un module standard, déclaré des variables "public"
Public Conn As ADODB.Connection
Public Rst As ADODB.Recordset
Tu peux même ajouter des "Const Public" contenant la chaine de caractère
de tes requêtes si ces dernières sont "fixes"
Public Const Rsql_1= "SELECT DISTINCT articles.[artcode],
articles.[artdesig] FROM articles;"
Public Const Rsql_2= "Select ...."
Dans le ThisWorkbook de ton classeur :
'-------------------
Private Sub Workbook_Open()
OuvrirConnexionVersBaseDeDonnées
End Sub
'-------------------
Dans un module Standard :
'--------------------
Sub OuvrirConnexionVersBaseDeDonnées
With conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
End Sub
'--------------------
Et dans une procédure quelconque lorsque tu auras besoin d'ouvrir un
recordset :
'---------------------
Sub MaSub()
Rst.Open Rsql_1, Conn adOpenKeyset
' Traitement du recordset
Rst.close
End sub
'---------------------
Et pour terminer en beauté : Dans le ThisWorkbook de ton classeur :
'------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Rst = Nothing, Set Conn = Nothing
End Sub
'------------------
Salutations!
"Thierry Euzenot" a écrit dans le message de
news:
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Bonjour Thierry,
"Est-ce que ça marche même si 5 ou 6 ordinateurs sont connectés en même
temps
sur la même base ?"
En théorie, oui, SAUF si 2 usagers essaient d'intervenir (modifier) sur
les mêmes enregistrements en même temps ! tu
auras plus d'informations sur le groupe de discussion Access sur la façon
dont Access gère cela.
Salutations!
"Thierry Euzenot" a écrit dans le message de
news:%
Oui effectivement ça à l'air judicieux :o)
Est-ce que ça marche même si 5 ou 6 ordinateurs sont connectés en même
temps
sur la même base ?
En effet la base va être sur le serveur et 6 ordinateurs auront accès à la
BDD 8h par jours....
"michdenis" a écrit dans le message de
news:%Bonjour Tnierry,
en supplément à ce que Himself énonce,
Tu peux dans le haut d'un module standard, déclaré des variables
"public"
Public Conn As ADODB.Connection
Public Rst As ADODB.Recordset
Tu peux même ajouter des "Const Public" contenant la chaine de caractère
de tes requêtes si ces dernières sont "fixes"
Public Const Rsql_1= "SELECT DISTINCT articles.[artcode],
articles.[artdesig] FROM articles;"Public Const Rsql_2= "Select ...."
Dans le ThisWorkbook de ton classeur :
'-------------------
Private Sub Workbook_Open()
OuvrirConnexionVersBaseDeDonnées
End Sub
'-------------------
Dans un module Standard :
'--------------------
Sub OuvrirConnexionVersBaseDeDonnées
With conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
End Sub
'--------------------
Et dans une procédure quelconque lorsque tu auras besoin d'ouvrir un
recordset :'---------------------
Sub MaSub()
Rst.Open Rsql_1, Conn adOpenKeyset
' Traitement du recordset
Rst.close
End sub
'---------------------
Et pour terminer en beauté : Dans le ThisWorkbook de ton classeur :
'------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Rst = Nothing, Set Conn = Nothing
End Sub
'------------------
Salutations!
"Thierry Euzenot" a écrit dans le message de
news:Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
viaVBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont
je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car
si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Bonjour Thierry,
"Est-ce que ça marche même si 5 ou 6 ordinateurs sont connectés en même
temps
sur la même base ?"
En théorie, oui, SAUF si 2 usagers essaient d'intervenir (modifier) sur
les mêmes enregistrements en même temps ! tu
auras plus d'informations sur le groupe de discussion Access sur la façon
dont Access gère cela.
Salutations!
"Thierry Euzenot" <te.st2e@free.fr> a écrit dans le message de
news:%237KsnzYOEHA.3028@TK2MSFTNGP11.phx.gbl...
Oui effectivement ça à l'air judicieux :o)
Est-ce que ça marche même si 5 ou 6 ordinateurs sont connectés en même
temps
sur la même base ?
En effet la base va être sur le serveur et 6 ordinateurs auront accès à la
BDD 8h par jours....
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:%234DXanSOEHA.620@TK2MSFTNGP10.phx.gbl...
Bonjour Tnierry,
en supplément à ce que Himself énonce,
Tu peux dans le haut d'un module standard, déclaré des variables
"public"
Public Conn As ADODB.Connection
Public Rst As ADODB.Recordset
Tu peux même ajouter des "Const Public" contenant la chaine de caractère
de tes requêtes si ces dernières sont "fixes"
Public Const Rsql_1= "SELECT DISTINCT articles.[artcode],
articles.[artdesig] FROM articles;"
Public Const Rsql_2= "Select ...."
Dans le ThisWorkbook de ton classeur :
'-------------------
Private Sub Workbook_Open()
OuvrirConnexionVersBaseDeDonnées
End Sub
'-------------------
Dans un module Standard :
'--------------------
Sub OuvrirConnexionVersBaseDeDonnées
With conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
End Sub
'--------------------
Et dans une procédure quelconque lorsque tu auras besoin d'ouvrir un
recordset :
'---------------------
Sub MaSub()
Rst.Open Rsql_1, Conn adOpenKeyset
' Traitement du recordset
Rst.close
End sub
'---------------------
Et pour terminer en beauté : Dans le ThisWorkbook de ton classeur :
'------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Rst = Nothing, Set Conn = Nothing
End Sub
'------------------
Salutations!
"Thierry Euzenot" <te.st2e@free.fr> a écrit dans le message de
news:O1NGVJQOEHA.3712@TK2MSFTNGP10.phx.gbl...
Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
via
VBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont
je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car
si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête
.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)
Bonjour Thierry,
"Est-ce que ça marche même si 5 ou 6 ordinateurs sont connectés en même
temps
sur la même base ?"
En théorie, oui, SAUF si 2 usagers essaient d'intervenir (modifier) sur
les mêmes enregistrements en même temps ! tu
auras plus d'informations sur le groupe de discussion Access sur la façon
dont Access gère cela.
Salutations!
"Thierry Euzenot" a écrit dans le message de
news:%
Oui effectivement ça à l'air judicieux :o)
Est-ce que ça marche même si 5 ou 6 ordinateurs sont connectés en même
temps
sur la même base ?
En effet la base va être sur le serveur et 6 ordinateurs auront accès à la
BDD 8h par jours....
"michdenis" a écrit dans le message de
news:%Bonjour Tnierry,
en supplément à ce que Himself énonce,
Tu peux dans le haut d'un module standard, déclaré des variables
"public"
Public Conn As ADODB.Connection
Public Rst As ADODB.Recordset
Tu peux même ajouter des "Const Public" contenant la chaine de caractère
de tes requêtes si ces dernières sont "fixes"
Public Const Rsql_1= "SELECT DISTINCT articles.[artcode],
articles.[artdesig] FROM articles;"Public Const Rsql_2= "Select ...."
Dans le ThisWorkbook de ton classeur :
'-------------------
Private Sub Workbook_Open()
OuvrirConnexionVersBaseDeDonnées
End Sub
'-------------------
Dans un module Standard :
'--------------------
Sub OuvrirConnexionVersBaseDeDonnées
With conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
End Sub
'--------------------
Et dans une procédure quelconque lorsque tu auras besoin d'ouvrir un
recordset :'---------------------
Sub MaSub()
Rst.Open Rsql_1, Conn adOpenKeyset
' Traitement du recordset
Rst.close
End sub
'---------------------
Et pour terminer en beauté : Dans le ThisWorkbook de ton classeur :
'------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Rst = Nothing, Set Conn = Nothing
End Sub
'------------------
Salutations!
"Thierry Euzenot" a écrit dans le message de
news:Re-Bonjour à tous :o)
Petit à petit j'avance dans ma recherche/formation sur la gestion de BDD
viaVBA !
Mon code marche, mais j'aimerais l'optimiser un peu.
En fait la connexion à la base de donnée, c'est un morceau de code dont
je
vais avoir besoin dans beaucoup de routines, voire même dans plusieurs
modules. C'est pas très malin de recopier le code dans chaque sub() car
si
je veux faire une modif...
Donc mon idée c'était d'en faire une fonction. J'ai essayé... j'ai pas
réussi :o(
Quelqu'un pourrait m'aider svp ?
Thierry
Mon code (en fait largement inspiré de l'exemple Microsoft ^^) :
==> 1ère partie : Connexion à la base :
'Définit le nom de la connexion
Dim conn As ADODB.Connection
' Création de l'objet Connexion
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 Comptoir.mdb
.Open ThisWorkbook.Path & "art_st2e.mdb"
End With
==> 2e partie la requête (simple pour l'instant)
'Définit le nom de la requête
Dim rst As ADODB.Recordset
'Définit les variables de la requête
Dim Nsql As String, Njoin As String, Ncriteria As String
'Variable de compteur
Dim i As Integer
Rsql = "SELECT DISTINCT articles.[artcode], articles.[artdesig] FROM
articles;"
' Création d'un nouvel objet Recordset (jeu d'enregistrement)
Set rst = New ADODB.Recordset
With rst
' Connexion du jeu d'engistrement à la connexion ouverte
précédemment
.ActiveConnection = conn
' Récupération de tous les enregistrements retournés par la
requête.Open Rsql, conn, adOpenDynamic, adLockBatchOptimistic
End With
==> 3e partie (la suite mais on s'en fiche !)