Supprimer les liaisons de tables attachées par VBA
4 réponses
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)
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
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
"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
"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
| 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
| 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
| 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
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
"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
"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
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
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
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