OVH Cloud OVH Cloud

Geler les tables liées

11 réponses
Avatar
Erwan
Bonjour

Mon application est fractionn=E9e.=20
Une base contient les tables.
Une autre contient les formulaires,requetes...et des=20
tables li=E9es.

Je souhaite pouvoir faire des archivages de ma base=20
r=E9guli=E8rement (sur CD). A ce moment tout plante, car les=20
liaisons continuent de pointer vers la premi=E8re base.

Y a t'il moyen de geler les liaisons avant de faire ma=20
copie??

Merci d'avance

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

le meilleur moyen de pouvoir sauvegarder est de sortir tous les utilisateurs
: voir la page: http://mypage.bluewin.ch/w.stucki/Admin.htm#BloquerUsagers
une autre solution consiste à couper le réseau pendant les sauvegardes , ton
administrateur, ou toi si tu es administrateur, peut utiliser Net Server
Stop et net Server Start avant et après les sauvegardes.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Erwan" a écrit dans le message de
news: 137101c4a5f9$9303b530$
Bonjour

Mon application est fractionnée.
Une base contient les tables.
Une autre contient les formulaires,requetes...et des
tables liées.

Je souhaite pouvoir faire des archivages de ma base
régulièrement (sur CD). A ce moment tout plante, car les
liaisons continuent de pointer vers la première base.

Y a t'il moyen de geler les liaisons avant de faire ma
copie??

Merci d'avance
Avatar
Je ne voie pas bien le rapport avec mon problème.
Je vais essayer de reformuler

Mon application comporte des tables liées vers une autre
base.
Je veux la copier sur CD (y compris l'autre base)

Lorsque je le fais..toutes les requetes basées sur ces
tables liées ne marchent plus.

J'aimerai donc :
-Faire une copie de ma base sur le même emplacement
-Briser les relations (que les tables liées apparaissent
comme des tables normales en conservant leur données) de
ma copie
_Transférer ma copie sur CD


merci d'avance


-----Message d'origine-----
Bonjour.

le meilleur moyen de pouvoir sauvegarder est de sortir
tous les utilisateurs

: voir la page:
http://mypage.bluewin.ch/w.stucki/Admin.htm#BloquerUsagers

une autre solution consiste à couper le réseau pendant
les sauvegardes , ton

administrateur, ou toi si tu es administrateur, peut
utiliser Net Server

Stop et net Server Start avant et après les sauvegardes.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Erwan" a écrit
dans le message de

news: 137101c4a5f9$9303b530$
Bonjour

Mon application est fractionnée.
Une base contient les tables.
Une autre contient les formulaires,requetes...et des
tables liées.

Je souhaite pouvoir faire des archivages de ma base
régulièrement (sur CD). A ce moment tout plante, car les
liaisons continuent de pointer vers la première base.

Y a t'il moyen de geler les liaisons avant de faire ma
copie??

Merci d'avance


.



Avatar
Jac
Si je comprends bien, tu voudrais que ton application fonctionne
à partir du CD ?
Dans ce cas tu sauvegarde les 2 mdb (data et outils) après avoir
rendu les liens dynamiques.
Si c'est ça que tu veux, je peux t'expliquer comment faire.

@ +

Jac

a écrit dans le message de news:
35b001c4a5fd$0777fef0$

Mon application comporte des tables liées vers une autre
base. Je veux la copier sur CD (y compris l'autre base)

Lorsque je le fais..toutes les requetes basées sur ces
tables liées ne marchent plus.

J'aimerai donc :
-Faire une copie de ma base sur le même emplacement
-Briser les relations (que les tables liées apparaissent
comme des tables normales en conservant leur données) de
ma copie
_Transférer ma copie sur CD


merci d'avance
Avatar
Jessy Sempere [MVP]
Bonjour

Le code qui suit devrait te convenir, il te créera un fichier contenant
tous les objets de ta base ainsi que les tables en directes il te suffit de
le placer dans ta base contenant les les formulaires et autres...

L'argument strData correspond au chemin complet et au nom de ta
base contenant les tables...

****************************************************

Public Function SaveFusionDb(strData As String)

Dim Db As Database
Dim qry As QueryDef
Dim cnt As Container
Dim doc As Document
Dim strDataBase As String
Dim strDbPath As String
Dim strDbFile As String

strDbPath = CurrentDb.Name
strDbFile = Dir(strDbPath)
strDataBase = left(strDbPath, Len(strDbPath) - Len(strDbFile)) _
& "Save_" & strDbFile

DBEngine.CompactDataBase strData, strDataBase

Set Db = CurrentDb
For Each qry In Db.QueryDefs
DoCmd.CopyObject strDataBase, qry.Name, acQuery, qry.Name
Next
Set cnt = Db.Containers("Forms")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name, acForm, doc.Name
Next
Set cnt = Db.Containers("Reports")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name, acReport, doc.Name
Next
Set cnt = Db.Containers("Scripts")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name, acMacro, doc.Name
Next
Set cnt = Db.Containers("Modules")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name, acModule, doc.Name
Next
Db.Close: Set Db = Nothing
Set cnt = Nothing

MsgBox "Opération de sauvegarde terminée"

End Function
****************************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
a écrit dans le message news:
35b001c4a5fd$0777fef0$
Je ne voie pas bien le rapport avec mon problème.
Je vais essayer de reformuler

Mon application comporte des tables liées vers une autre
base.
Je veux la copier sur CD (y compris l'autre base)

Lorsque je le fais..toutes les requetes basées sur ces
tables liées ne marchent plus.

J'aimerai donc :
-Faire une copie de ma base sur le même emplacement
-Briser les relations (que les tables liées apparaissent
comme des tables normales en conservant leur données) de
ma copie
_Transférer ma copie sur CD


merci d'avance
Avatar
Jac
... mais de toutes les façons, ça ne pourra jamais marcher depuis un CD car
Access ne travaille pas en lecture seule. Il faudra mettre les 2 mdb sur un
disque physique ou réseau avant de pouvoir travailler avec.
Avatar
Raymond [mvp]
je ne vois pas du tout le pourquoi du comment. que les liaisons ne
fonctionnent plus sur les copies c'est normal, ce ne sont que des copies de
sauvegarde. si tu veux travailler avec les copies, il faut refaire les liens
entre la base principale copie et les bases frontales sur les postes.

-Faire une copie de ma base sur le même emplacement
-Briser les relations (que les tables liées apparaissent
comme des tables normales en conservant leur données) de
ma copie
_Transférer ma copie sur CD


-copie, tu sais faire.
-briser les relations : supprime les tables liées.
-comme des tables normales: fait un import des tables. en version 2003 tu
peux convertir les tables liées en tables locales.
-transférer la copoie, tu sais faire.

je ne comprend peut-être pas la question, mais je ne vois pas l'utilité
d'une telle manoeuvre.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le message de news:
35b001c4a5fd$0777fef0$
Je ne voie pas bien le rapport avec mon problème.
Je vais essayer de reformuler

Mon application comporte des tables liées vers une autre
base.
Je veux la copier sur CD (y compris l'autre base)

Lorsque je le fais..toutes les requetes basées sur ces
tables liées ne marchent plus.

J'aimerai donc :
-Faire une copie de ma base sur le même emplacement
-Briser les relations (que les tables liées apparaissent
comme des tables normales en conservant leur données) de
ma copie
_Transférer ma copie sur CD


merci d'avance

Avatar
oui je suis intéressé par le principe des liaisons
dynamiques (???) et tant pis pour le cd!!
-----Message d'origine-----
.... mais de toutes les façons, ça ne pourra jamais
marcher depuis un CD car

Access ne travaille pas en lecture seule. Il faudra
mettre les 2 mdb sur un

disque physique ou réseau avant de pouvoir travailler
avec.



.



Avatar
Erwan
losque je lance la fonction j'ai l'erreur "ERREUR DE
COMPILATION, Type défini par l'utilisateur non défini" en
pointant sur Dim Db As database

Ben pourquoi???
-----Message d'origine-----
Bonjour

Le code qui suit devrait te convenir, il te créera un
fichier contenant

tous les objets de ta base ainsi que les tables en
directes il te suffit de

le placer dans ta base contenant les les formulaires et
autres...


L'argument strData correspond au chemin complet et au
nom de ta

base contenant les tables...

****************************************************

Public Function SaveFusionDb(strData As String)

Dim Db As Database
Dim qry As QueryDef
Dim cnt As Container
Dim doc As Document
Dim strDataBase As String
Dim strDbPath As String
Dim strDbFile As String

strDbPath = CurrentDb.Name
strDbFile = Dir(strDbPath)
strDataBase = left(strDbPath, Len(strDbPath) - Len
(strDbFile)) _

& "Save_" & strDbFile

DBEngine.CompactDataBase strData, strDataBase

Set Db = CurrentDb
For Each qry In Db.QueryDefs
DoCmd.CopyObject strDataBase, qry.Name, acQuery,
qry.Name

Next
Set cnt = Db.Containers("Forms")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name, acForm,
doc.Name

Next
Set cnt = Db.Containers("Reports")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name,
acReport, doc.Name

Next
Set cnt = Db.Containers("Scripts")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name, acMacro,
doc.Name

Next
Set cnt = Db.Containers("Modules")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name,
acModule, doc.Name

Next
Db.Close: Set Db = Nothing
Set cnt = Nothing

MsgBox "Opération de sauvegarde terminée"

End Function
****************************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
a écrit dans le
message news:

35b001c4a5fd$0777fef0$
Je ne voie pas bien le rapport avec mon problème.
Je vais essayer de reformuler

Mon application comporte des tables liées vers une autre
base.
Je veux la copier sur CD (y compris l'autre base)

Lorsque je le fais..toutes les requetes basées sur ces
tables liées ne marchent plus.

J'aimerai donc :
-Faire une copie de ma base sur le même emplacement
-Briser les relations (que les tables liées apparaissent
comme des tables normales en conservant leur données) de
ma copie
_Transférer ma copie sur CD


merci d'avance


.



Avatar
Jessy Sempere [MVP]
Tu dois utiliser sûrement Access 2000 ou supérieur

Rajoute la référence :
Microsoft DAO x.xx Object Library

Et dans le code, remplaces la ligne en question par :

dim db as Dao.database

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Erwan" a écrit dans le message news:
141b01c4a605$850178d0$

losque je lance la fonction j'ai l'erreur "ERREUR DE
COMPILATION, Type défini par l'utilisateur non défini" en
pointant sur Dim Db As database

Ben pourquoi???
-----Message d'origine-----
Bonjour

Le code qui suit devrait te convenir, il te créera un
fichier contenant

tous les objets de ta base ainsi que les tables en
directes il te suffit de

le placer dans ta base contenant les les formulaires et
autres...


L'argument strData correspond au chemin complet et au
nom de ta

base contenant les tables...

****************************************************

Public Function SaveFusionDb(strData As String)

Dim Db As Database
Dim qry As QueryDef
Dim cnt As Container
Dim doc As Document
Dim strDataBase As String
Dim strDbPath As String
Dim strDbFile As String

strDbPath = CurrentDb.Name
strDbFile = Dir(strDbPath)
strDataBase = left(strDbPath, Len(strDbPath) - Len
(strDbFile)) _

& "Save_" & strDbFile

DBEngine.CompactDataBase strData, strDataBase

Set Db = CurrentDb
For Each qry In Db.QueryDefs
DoCmd.CopyObject strDataBase, qry.Name, acQuery,
qry.Name

Next
Set cnt = Db.Containers("Forms")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name, acForm,
doc.Name

Next
Set cnt = Db.Containers("Reports")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name,
acReport, doc.Name

Next
Set cnt = Db.Containers("Scripts")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name, acMacro,
doc.Name

Next
Set cnt = Db.Containers("Modules")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name,
acModule, doc.Name

Next
Db.Close: Set Db = Nothing
Set cnt = Nothing

MsgBox "Opération de sauvegarde terminée"

End Function
****************************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
a écrit dans le
message news:

35b001c4a5fd$0777fef0$
Je ne voie pas bien le rapport avec mon problème.
Je vais essayer de reformuler

Mon application comporte des tables liées vers une autre
base.
Je veux la copier sur CD (y compris l'autre base)

Lorsque je le fais..toutes les requetes basées sur ces
tables liées ne marchent plus.

J'aimerai donc :
-Faire une copie de ma base sur le même emplacement
-Briser les relations (que les tables liées apparaissent
comme des tables normales en conservant leur données) de
ma copie
_Transférer ma copie sur CD


merci d'avance


.



Avatar
Erwan
Génial! c'est exactement ce que je voulais..à un petit
détail.

toutes mes requetes marchent sauf une:
Il s'agit d'une requete analyse croisée, qui utilise la
fonction Isnull en critère.
Losrque je lance cette requete (qui marche parfaitement
dans la base normale) dans la base_save,
j'obtiens "Fonction IsNull non définie dans l'expression".

serait ce du au Microsoft DAO x.xx Object Library
??????


GRRRRRRRRR!!
je n'y comprend rien!
-----Message d'origine-----
Tu dois utiliser sûrement Access 2000 ou supérieur

Rajoute la référence :
Microsoft DAO x.xx Object Library

Et dans le code, remplaces la ligne en question par :

dim db as Dao.database

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Erwan" a écrit
dans le message news:

141b01c4a605$850178d0$

losque je lance la fonction j'ai l'erreur "ERREUR DE
COMPILATION, Type défini par l'utilisateur non défini" en
pointant sur Dim Db As database

Ben pourquoi???
-----Message d'origine-----
Bonjour

Le code qui suit devrait te convenir, il te créera un
fichier contenant

tous les objets de ta base ainsi que les tables en
directes il te suffit de

le placer dans ta base contenant les les formulaires et
autres...


L'argument strData correspond au chemin complet et au
nom de ta

base contenant les tables...

****************************************************

Public Function SaveFusionDb(strData As String)

Dim Db As Database
Dim qry As QueryDef
Dim cnt As Container
Dim doc As Document
Dim strDataBase As String
Dim strDbPath As String
Dim strDbFile As String

strDbPath = CurrentDb.Name
strDbFile = Dir(strDbPath)
strDataBase = left(strDbPath, Len(strDbPath) - Len
(strDbFile)) _

& "Save_" & strDbFile

DBEngine.CompactDataBase strData, strDataBase

Set Db = CurrentDb
For Each qry In Db.QueryDefs
DoCmd.CopyObject strDataBase, qry.Name, acQuery,
qry.Name

Next
Set cnt = Db.Containers("Forms")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name, acForm,
doc.Name

Next
Set cnt = Db.Containers("Reports")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name,
acReport, doc.Name

Next
Set cnt = Db.Containers("Scripts")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name, acMacro,
doc.Name

Next
Set cnt = Db.Containers("Modules")
For Each doc In cnt.Documents
DoCmd.CopyObject strDataBase, doc.Name,
acModule, doc.Name

Next
Db.Close: Set Db = Nothing
Set cnt = Nothing

MsgBox "Opération de sauvegarde terminée"

End Function
****************************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
a écrit dans le
message news:

35b001c4a5fd$0777fef0$
Je ne voie pas bien le rapport avec mon problème.
Je vais essayer de reformuler

Mon application comporte des tables liées vers une autre
base.
Je veux la copier sur CD (y compris l'autre base)

Lorsque je le fais..toutes les requetes basées sur ces
tables liées ne marchent plus.

J'aimerai donc :
-Faire une copie de ma base sur le même emplacement
-Briser les relations (que les tables liées apparaissent
comme des tables normales en conservant leur données) de
ma copie
_Transférer ma copie sur CD


merci d'avance


.




.




1 2