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

Supprimer les liaisons de tables attachées par VBA

4 réponses
Avatar
Eric Brue
Bonjour

Existe-t-il une commande simple en VBA pour supprimer les liaisons aux
tables d'une autre base de données attachée.
(Je n'arrive pas à compacter cette base car les tables sont liées ce qui
entraine une erreur)

Merci d'avance
Eric

4 réponses

Avatar
3stone
Salut Eric,

"Eric Brue"
| Existe-t-il une commande simple en VBA pour supprimer les liaisons aux
| tables d'une autre base de données attachée.
| (Je n'arrive pas à compacter cette base car les tables sont liées ce qui
| entraine une erreur)


Supprimer le lien vers une table liée revient à supprimer la table liée...
non pas la table réelle dans la base dorsale, mais son "image" dans la frontale!

il suffit donc de boucler sur les tables, et si propriété "connect" la supprimer.


Public Function DeleteConnectedTable()

Dim dbs As DAO.Database, tdf As DAO.TableDef
Dim tbl As Object

Set dbs = CurrentDb()
For Each tbl In dbs.TableDefs
If Len(tbl.Connect) > 0 Then
'table attachée
Debug.Print tbl.Name
dbs.Execute "Drop Table [" & tbl.Name & "]"
End If
Next

Set tdf = Nothing
Set dbs = Nothing

End Function



--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Eric Brue
| Existe-t-il une commande simple en VBA pour supprimer les liaisons aux
| tables d'une autre base de données attachée.
| (Je n'arrive pas à compacter cette base car les tables sont liées ce qui
| entraine une erreur)


Supprimer le lien vers une table liée revient à supprimer la table liée...
non pas la table réelle dans la base dorsale, mais son "image" dans la
frontale!
il suffit donc de boucler sur les tables, et si propriété "connect" la
supprimer.


Merci,
malheureusement ça ne convient pas car effectivement ça supprime l'image des
tables attachées et je ne peux plus recréer la liaison par la fonction de
rattachement des tables (base exemple les comptoirs).
Il n'y a pas un moyen de fermer la base attachée sans supprimer les tables?
ou juste "casser" le lien sans supprimer la table?
encore merci
Eric

Avatar
3stone
Salut,

"Eric Brue"
|> | Existe-t-il une commande simple en VBA pour supprimer les liaisons aux
| > | tables d'une autre base de données attachée.
| > | (Je n'arrive pas à compacter cette base car les tables sont liées ce qui
| > | entraine une erreur)
| >
| >
| > Supprimer le lien vers une table liée revient à supprimer la table liée...
| > non pas la table réelle dans la base dorsale, mais son "image" dans la
| > frontale!
| > il suffit donc de boucler sur les tables, et si propriété "connect" la
| > supprimer.

| malheureusement ça ne convient pas car effectivement ça supprime l'image des
| tables attachées et je ne peux plus recréer la liaison par la fonction de
| rattachement des tables (base exemple les comptoirs).
| Il n'y a pas un moyen de fermer la base attachée sans supprimer les tables?
| ou juste "casser" le lien sans supprimer la table?


En fait, pour compacter tu n'as pas besoin de "couper" la liaison...
Il faut seulement veiller à bien fermer les formulaires et autres recordset.


Et utiliser par exemple ceci :

Public Function fCompactBE()
Dim X As String
Dim BE As String
BE = "C:LeCheminLaBackEnd.mdb"
X = Shell("Msaccess.exe " & Chr$(34) & BE & Chr$(34) & " /compact")
End Function



Ou la méthode de Jessy :

Function CompactDataBaseX(strDb As String)
Dim strDbTmp As String
DoCmd.Hourglass True
strDbTmp = Left(strDb, Len(strDb) - 3) & "tmp"
DBEngine.CompactDatabase strDb, strDbTmp
Kill strDb
Name strDbTmp As strDb
DoCmd.Hourglass False
EndFunction


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Eric
En fait, pour compacter tu n'as pas besoin de "couper" la liaison...
Il faut seulement veiller à bien fermer les formulaires et autres recor dset.


Merci Pierre

J'utilise une méthode proche de celle de Jessy.
Effectivement ça fonctionne après avoir supprimé une zone de liste
dans mon formulaire de configuration qui prend des données dans une
des tables attachées.
Fallait y penser.
Merci encore
Eric