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

[VBA] Fermer une connexion avec une base de donnée

2 réponses
Avatar
HD
Bonjour,

Je récupére des données dans une BdD Access. Pour celà j'utilise ces lignes
de commandes ci-dessous. En fait je voudrais pouvoir ne garder que les
valeurs des données récupérées en Fermant la connexion avec la base de
donnée...

D'autre part y'a-t-il un argument permettant de n'ouvrir la BdD qu'en
lecture seule ?
Les arguments MaxBufferSize et PageTimeout peuvent elles permettre une
optimisation de la récupération des données ?

Voici mon code pour accèder à la BdD Access :

With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=MS Access
Database;DBQ=" & FicDoss & ";DefaultDir=c:;DriverId=25;FIL=MS
Access;MaxBufferSize=8192;PageTimeout=5000;PWD=" & MdP & ";UID=admin;",
Destination:=Range("A1"))
.Sql = Req
.FieldNames = True
.RefreshStyle = xlInsertDeleteCells
.RowNumbers = False
.FillAdjacentFormulas = False
.RefreshOnFileOpen = False
.HasAutoFormat = True
.BackgroundQuery = True
.TablesOnlyFromHTML = True
.Refresh BackgroundQuery:=False
.SavePassword = True
.SaveData = True
End With

Merci d'avance pour votre aide
--
@+
HD

2 réponses

Avatar
michdenis
Bonjour Hd,

À chaque fois qu'il y a création d'un QueryTable dans une feuille d'excel, il y a création d'un "Nom" (barre des menus / insertion /
nom / définir...) représentant la plage des cellules recevant les données de la requête. Pour avoir accès à ce "nom", tu peux
simplement utilisé une variable (ou une cellule de la feuille de calcul) pour emmagaziner la propriété "Name" du QueryTable.

Dim MyVar as string

.Sql = Req
MyVar = .Name

à la fin de la procédure :
Names(myvar).delete

Lorsque tu supprimes ce "Nom", tu coupes toute connection avec la table source et aucune possibilité d'effectuer une mise à jour
est possible.

| D'autre part y'a-t-il un argument permettant de n'ouvrir la BdD qu'en lecture seule ?

Il serait surprenant qu'il en soit différent ! À ce que je sache, il est impossible de modifier les données sources en utilisant un
QueryTable...Ce processus est utilisé pour importer des données dans Excel et non pour en exporter vers une base de données.


Salutations!




"HD" a écrit dans le message de news: diie9v$1hb8$
Bonjour,

Je récupére des données dans une BdD Access. Pour celà j'utilise ces lignes
de commandes ci-dessous. En fait je voudrais pouvoir ne garder que les
valeurs des données récupérées en Fermant la connexion avec la base de
donnée...

D'autre part y'a-t-il un argument permettant de n'ouvrir la BdD qu'en
lecture seule ?
Les arguments MaxBufferSize et PageTimeout peuvent elles permettre une
optimisation de la récupération des données ?

Voici mon code pour accèder à la BdD Access :

With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=MS Access
Database;DBQ=" & FicDoss & ";DefaultDir=c:;DriverId%;FIL=MS
Access;MaxBufferSize92;PageTimeoutP00;PWD=" & MdP & ";UID­min;",
Destination:=Range("A1"))
.Sql = Req
.FieldNames = True
.RefreshStyle = xlInsertDeleteCells
.RowNumbers = False
.FillAdjacentFormulas = False
.RefreshOnFileOpen = False
.HasAutoFormat = True
.BackgroundQuery = True
.TablesOnlyFromHTML = True
.Refresh BackgroundQuery:úlse
.SavePassword = True
.SaveData = True
End With

Merci d'avance pour votre aide
--
@+
HD
Avatar
HD
Un grand MERCI à toi michdenis...

Je ne savais pas que ce lien était conservé comme Nom...

Il serait surprenant qu'il en soit différent ! À ce que je sache,
il est impossible de modifier les données sources en utilisant
un QueryTable...Ce processus est utilisé pour importer des
données dans Excel et non pour en exporter vers une base
de données.
ça va... Celà me rassure car avec les manipulations de BdD une erreur peut

faire mal... Et vu que je n'ai besoin des données qu'en consultation alors
celà me va comme cela.
--
@+
HD