Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/07/2007, 21h24   #1
Invité régulier
 
Inscription : décembre 2004
Messages : 46
Détails du profil
Informations personnelles :
Âge : 69
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : décembre 2004
Messages : 46
Points : 9
Points : 9
Par défaut Re : Table liée

Je refais un nouveau sujet afin qu'une suite puisse m'être donné. Le sujet précédent étant maintenant résolu pour Faro.

Je reprends donc quelques éléments du sujet Table liée

Citation:
Envoyé par Faro
Je suis passé par splash, sur que c'est mieux
Bien sûr mon essai n'a pas marché. Je ne sais ce que veux dire Faro par splash screen. ???

J'ai donc mis ce code dans la formulaire de démarrage (Menu ou Switchboard) espérant que cela fonctionnerait. Il me donne toujours une erreur de chemin. J'ai fais donc un test sur un seul formulaire et là aussi même résultat.

Citation:
Envoyé par Dolphy
2 solutions :
1-Soit tu créer un formulaire intermédiaire pour éxécuter ce code sachant que ce form ne devra pointer sur aucune table liée.

2-Tu mets le code dans une Fonction que tu appelles par une macro, tu appelles cette macro Autoexec, cette macro sera automatiquement exécutée au démarage de la bbd sauf lors de l'appuit de shift lors de l'ouverture de la bdd.
Dolphy donne d'autre solution dont la 2ieme. je sais faire une macro j'en ai fait plusieurs pour des mises à jour automatique. Elles sont lancées par un clic sur le menu. Mais je ne comprends pas la phrase "Tu mets le code dans une Fonction que tu appelles par une macro et notamment "Fonction"

Enfin comme dans cette bbd j'ai mis des photo d'identités (dans le chemin courant) est-ce que ce chemin sera modifié lui aussi ??
Phyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 21h45   #2
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 740
Points : 8 740
Salut,

Pour la fonction : tu créer un module et tu y ajoute le code :

Code :
1
2
3
4
5
Function tutu ()
 
'Code à mettre
 
End Function
Tu créer une nouvelle macro ayant pour action "ExécuterCode" et dans nom de la fonction tu mets ta fonction "tutu"

tu appel cette macro "Autoexec"

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 02h17   #3
Invité régulier
 
Inscription : décembre 2004
Messages : 46
Détails du profil
Informations personnelles :
Âge : 69
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : décembre 2004
Messages : 46
Points : 9
Points : 9
Désolé Dolphy je n'y suis pas arrivé,

J'ai créé le module 1 et j'ai placé le code appeler TableLier comme indiqué sur le post précédent. J'ai créé la macro Autoexec, mais au démarrage Access me signale une erreur: impossible de trouver le nom TableLier dans l'expression ...

J'ai fait les essais aussi en changeant le nom de la fonction TableLier avec celui de tutu () en vain.

Je suis plutôt nul, car je ne vois pas l'erreur;
Phyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 17h53   #4
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 740
Points : 8 740
Salut phyl,

tu n'aurais pas oublié les parenthèses dans l'appel de ta fonction dans la Macro Autoexec ?

Sinon je t'ai fait un exemple, dans le zip tu as 3 bases (1 Dorsale et 2 Frontales), dans les bases frontales tu en a une qui met à jour les liaisons avec la Macro Autoexec et l'autre qui ouvre un SplashScreen pour mettre à jour les liaisons.

Dé-zip la pièce jointe dans le même dossier et ouvre les bdd

En espérant que cela va t'aider

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 12h14   #5
Invité régulier
 
Inscription : décembre 2004
Messages : 46
Détails du profil
Informations personnelles :
Âge : 69
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : décembre 2004
Messages : 46
Points : 9
Points : 9
Merci Dolphy

Effectivement cela fonctionne maintenant parfaitement. J'avais pourtant fait plusieurs essais, mais en fait le deuxième code que tu as mis dans l'exemple donne le nom de la table liée et je pense que mon erreur venait de là. Bref, maintenant c'est parfait. Je vais faire moi aussi un SplashScreen avec le logo de l'association (2000 membres).

Il me reste à mettre à jour le champ d'adresse ("photo") de la table liée (CA et Délégué) une trentaine de personnes et pour lesquels j'ai mis les photos d'identité. Ne pourrais-je récupéré l'adresse que ce module a trouvé ? Je pourrais ainsi exécuter une mise à jour automatique du champ "photo" avec une macro.

Avec ta méthode, je m'aperçois que j'utilise à peine quelques pour cent des possibilités d'Access.
Phyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2007, 01h31   #6
Invité régulier
 
Inscription : décembre 2004
Messages : 46
Détails du profil
Informations personnelles :
Âge : 69
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : décembre 2004
Messages : 46
Points : 9
Points : 9
Je reviens vers toi Dolphy,

Il me reste à mettre à jour le champ d'adresse du répertoire ("photo") de la table liée

Comment pourrais-je récupérer l'adresse du répertoire que le module "mdlLiaisonTables" a trouvé ?

Je pourrais ainsi exécuter une mise à jour automatique du champ "photo" avec une macro

Merci de ton aide
Phyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 20h13   #7
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 740
Points : 8 740
Salut Phyl,

Je me suis penché sur ton cas

je t'ai fais une petite base exemple

Explications :

La base est placé sur un répertoire C:\XXX celui-ci peut être différent car l'ensemble de ta base est portable. Donc je suis partit du principe que la bdd Dorsale ainsi que les images se trouvent dans des sous dossier du répertoire C:\XXX =>
Citation:
C:\XXX\
..-> Phyl_Frontale_Splash.mdb
..-> Serveur\
......-> Phyl_Dorsale.mdb
..-> Images\
......-> Toutes les images
Au début du post on était partit sur le principe de mettre à jour à l'ouverture de la bdd (jusque là c'est normale ) pendant l'affichage du SplashScreen :
à l'ouverture du Splash on lance le timer :
Code :
1
2
3
4
Private Sub Form_Open(Cancel As Integer)
    'chargement d'un temps pour la minuterie
    Me.TimerInterval = 3000
End Sub
ensuite sur le timer on vient tester si la bdd c'est déplacée, si oui on met à jour les tables ensuite on parcours la table pour modifier le chemin de la bdd, on ferme le splash et on ouvre le formulaire principale :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Form_Timer()
    'remise à zéro du temps pour la minuterie
    Me.TimerInterval = 0
    'Test si la bdd à bouger en testant le chemin de liaison des tables
    If Not (GetLinkedDBName("tbltest") = CurrentProject.Path & "\Serveur\Phyl_Dorsale.mdb") Then
        'Appel Fonction permettant de lier les tables
        If LierTables(CurrentProject.Path & "\Serveur\Phyl_Dorsale.mdb") = False Then GoTo err_Maj
        'Appel Fonction permettant de mettre à jour le chemin des images
        If MAJ_Photos(CurrentProject.Path & "\Images\", "tbltest", "testPhoto") = False Then GoTo err_Maj
        'message ok
        MsgBox "Mise à jour des tables et images => Ok", , "Mise à jour"
    End If
    'Fermeture du Splash
    DoCmd.Close
    'Ouverture Formulaire
    DoCmd.OpenForm "frmtest"
    Exit Sub
 
err_Maj:
    MsgBox "Une erreur c'est produite pendant la mise à jour des tables et de images", vbExclamation, "Mise à jour"
End Sub

Les fonctions :

1 - La fonction GetLinkedDBName permet de récupérer le chemin des tables liées :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function GetLinkedDBName(TableName As String)
'déclarations variables
Dim db As Database, Ret
'gestion des erreurs
On Error GoTo DBNameErr
    'gestion pour récupérer le chemin
    Set db = CurrentDb()
    Ret = db.TableDefs(TableName).Connect
    GetLinkedDBName = Right(Ret, Len(Ret) - (InStr(1, Ret, "DATABASE=") + 8))
    Exit Function
'erreur
DBNameErr:
    'renvoi si erreur
    GetLinkedDBName = 0
End Function
Comme paramètre pour cette fonction, on lui donne le nom de la table à tester.



2 - La Fonction LierTables permet de réconfigurer la liaison des tables avec la dorsale :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Function LierTables(strChmFichier As String) As Boolean
On Error GoTo err_Module
    'Initialistaion de la Fonction
    LierTables = False
    'Déclaration des variables
    Dim dbBase As DAO.Database
    Dim tbdTables As DAO.TableDef
 
    'Instancie la base courrante
    Set dbBase = CurrentDb
 
    'Boucle Parcourant toutes les tables de la Bdd en cours
    For Each tbdTables In dbBase.TableDefs
 
        'Teste l'attribut de la table pour savoir si c'est une table liée
        If tbdTables.Attributes And dbAttachedTable Then
            'Redéfini la propriété connect de la table avec la nouvelle base
            tbdTables.Connect = ";DATABASE=" & strChmFichier
            'Remet à jour la liaison de la table
            tbdTables.RefreshLink
        End If
 
    Next tbdTables
 
    'Liberation des variables
    dbBase.Close
    Set dbBase = Nothing
 
    'Mise à jour Ok
    LierTables = True
    'On sort de la Fonction
    Exit Function
 
err_Module:
    'affiche erreur
    MsgBox Err.Number & vbCrLf & Err.Description
    'Procédure Nok
    LierTables = False
End Function
Pour cette fonction le paramètre est le chemin de la base Dorsale, on va se servir de la bdd Frontale pour récupérer le chemin et ajouter le sous dossier \Serveur\ puis le nom de la bdd Dorsale.



3 - La Fonction MAJ_Photos permet de modifier le chemin dans le champ de la table :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Function MAJ_Photos(strChemin As String, strTable As String, strChamp As String) As Boolean
On Error GoTo err_Module
'Déclaration des variables
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strFichier As String
    'initialisation de la Fnction
    MAJ_Photos = False
 
    'Instance de la bdd et Recordset
    Set db = CurrentDb()
    Set rst = db.OpenRecordset("tbltest")
 
    'Test si pointeur en début du Recordset
    If Not rst.BOF Then
        'Place le pointeur sur le Premier enregistrement du Recordset
        rst.MoveFirst
    End If
 
    'Test si le chemin posède \ à la fin, si non on l'ajoute
    If Not Right(strChemin, 1) = "\" Then
        strChemin = strChemin & "\"
    End If
 
    'Boucle tant que l'on est pas passé dans chaque enregistrements
    While Not rst.EOF
        'Extraction du nom de l'image avec son extension
        strFichier = Right(rst(strChamp).Value, Len(rst(strChamp).Value) - InStrRev(rst(strChamp).Value, "\", -1, 1))
        'Passe en mode édition
        rst.Edit
        'Changement du chemin du champ de la table
        rst(strChamp).Value = strChemin & strFichier
        'Met à jour
        rst.Update
        'Enregistrement suivant
        rst.MoveNext
    Wend
 
    'Procédure ok
    MAJ_Photos = True
    'On sort de la Fonction
    Exit Function
 
err_Module:
    'affiche erreur
    MsgBox Err.Number & vbCrLf & Err.Description
    'Procédure Nok
    MAJ_Photos = False
 
End Function
cette fonction possède trois paramètres :
A-Le nouveau chemin (sur le même principe que les tables liées)
B-Le nom de la table à modifier.
C-Le nom du champ possédant le chemin des photos
dans cette fonction on récupère le nom de l'image avec son extension puis on lui met avant le nouveau chemin et ceci pour tous le enregistrements.


j'ai amélioré les fonctions par rapport à la dernière fois

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 22h03   #8
Invité régulier
 
Inscription : décembre 2004
Messages : 46
Détails du profil
Informations personnelles :
Âge : 69
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : décembre 2004
Messages : 46
Points : 9
Points : 9
C'est super sympa cela Dolpy je vais me pencher sur cette option dès ce soir.

J'étais parti sur une autre option en cherchant à séparer dans la table le nom de l'image du chemin. Mais j'en étais à une vrai usine à gaz.

Avec ce code (je n'ai pas encore tout compris) aussi bien détaillé et expliqué cela devrait aller et me permettre de le comprendre.

Merci ... Merci, je te tiens au courant bien sûr



(Site association http://www.cmt-france.net - site perso http://www.depollunet.net)
Phyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2007, 22h31   #9
Invité régulier
 
Inscription : décembre 2004
Messages : 46
Détails du profil
Informations personnelles :
Âge : 69
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : décembre 2004
Messages : 46
Points : 9
Points : 9
Bonjour Dolphy

Tout d'abord un grand merci, c'est génial comme principe, mais j'avais encore un problème que je n'ai pas su résoudre. En effet, il peut arriver que le champs adresse "Photo" ne soit pas renseigné. Dans ce cas cela m'indique une erreur.

Ensuite chacune des 2 tables sont liées l'une à l'autre cela fonctionne parfaitement pour la base ayant les photos car elle est liée par un seul champ l'autre c'est plus compliqué car il y a 3 champs et je ne sais pas comment faire...

Table comportant les photos :

En suivant tes précieux conseils, j'ai d'abord réalisé quelques modifications car le fichier dorsal et frontal sont dans le même répertoire. La modification était donc assez facile.

En reportant les modules sur ma base ainsi qu'en reportant le fichier Splasch j'ai effectué les modifications des données champs et base, sur la "procédure évenementielle" permettant la commande des modules lorsque la base change de répertoire.

Avec l'erreur et donc l'arrêt de l'ouverure de la Bdd j'ai pas mal galéré avant de comprendre d'où cela venait. J'ai essayé dans le module "mdlModificationChamp" de mettre en place une condition "If me!testPhoto > 0 Then ..." au niveau de la boucle de modification du champ testPhoto ("While Not rst.EOF" ....) mais je n'y suis pas arrivé.

En fait j'ai rendu ce champ à renseigner obligatoirement et j'ai mis une image générique en remplacement de photo d'identité indisponible.

Ainsi cela marche très bien, mais j'aurais aimé savoir ce que j'aurais du faire.

Table principale :

Problème de 3 champs en liaison avec la table photos ....

Amitiés
Phyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2007, 23h24   #10
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 740
Points : 8 740
Salut Phyl,

tu étais pas loin pour la condition si champ vide ,

Code :
If me!testPhoto > 0 Then ...
sauf que cette synthaxe est utilisé pour contrôler un control du formulaire activé.

sauf que nous nous utilisons un recordset, il faut utiliser cette synthaxe :
Code :
If Not rst(strChamp) = "" Then
si le champ de l'enregistrement ayant le pointeur n'est pas égale à "" (pour vide) on éxécute le code précédent, par contre il ne faut pas mettre le movenext dans la if, voici la boucle modifiée :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    'Boucle tant que l'on est pas passé dans chaque enregistrements
    While Not rst.EOF
        'Teste si le champ est vide ou non
        If Not rst(strChamp) = "" Then
            'Extraction du nom de l'image avec son extension
            strFichier = Right(rst(strChamp).Value, Len(rst(strChamp).Value) - InStrRev(rst(strChamp).Value, "\", -1, 1))
            'Passe en mode édition
            rst.Edit
            'Changement du chemin du champ de la table
            rst(strChamp).Value = strChemin & strFichier
            'Met à jour
            rst.Update
        End If
        'Enregistrement suivant
        rst.MoveNext
    Wend
Pour ton autre problème je ne vois pas trop ce que tu veux éxactement, tu as trois champs en liaison ?
peux-tu donner plus d'explications


Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 16h05   #11
Invité régulier
 
Inscription : décembre 2004
Messages : 46
Détails du profil
Informations personnelles :
Âge : 69
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : décembre 2004
Messages : 46
Points : 9
Points : 9
Tu es super,

Quand je précise que j'ai 3 champs, c'est en fait moi qui me suis planté j'ai 3 tables liées. Sur 2 Bdd.

J'ai testé dans la procédure évènementielle du formulaire Splash chacune des tables par les codes :

If Not (GetLinkedDBName("Membres CMT") = CurrentProject.path & "\AssoCMT.mdb") Then .....

avec pour chaqcun le champ et la table mais cela plante et me donne une erreur notament au changement de Bdd

Merci
Phyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2007, 22h53   #12
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 740
Points : 8 740
Salut,
Citation:
Envoyé par Phyl
J'ai testé dans la procédure évènementielle du formulaire Splash chacune des tables par les codes :

Code :
If Not (GetLinkedDBName("Membres CMT") = CurrentProject.path & "\AssoCMT.mdb") Then .....
Je n'arrive pas à te suivre, tu dis que tu as trois table de ta frontale pointant vers deux dorsales ?

es ce que le schéma correspond ?


Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2007, 00h33   #13
Invité régulier
 
Inscription : décembre 2004
Messages : 46
Détails du profil
Informations personnelles :
Âge : 69
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : décembre 2004
Messages : 46
Points : 9
Points : 9
Je me suis certainement encore mal exprimé.

J'ai:
- une base Frontale (2500 noms) dont certains champs (3) sont liés avec la Bdd Dorsale1 (comportant les photos).

- la Dorsale1 elle est liée à la frontale pour le choix des membres (un seul champ)

- la Dorsale 2 est en liaison avec la frontale (un champ) et la Dorsale 1 (3 champ)

J'ai donc établi ce code pour la Bdd Dorsale 2

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
Private Sub Form_Timer()
'remise à zéro du temps pour la minuterie
Me.TimerInterval = 0
'Test si la bdd à bouger en testant le chemin de liaison des tables
 
'Controle champs AssoCmt
If Not (GetLinkedDBName("Membres CMT") = CurrentProject.path & "\AssoCMT.mdb") Then
'Appel Fonction permettant de lier les tables
If LierTables(CurrentProject.path & "\AssoCMT.mdb") = False Then GoTo err_Maj
End If
 
'Controle champs Type Abonnés
If Not (GetLinkedDBName("Type d'Abonnés") = CurrentProject.path & "\AssoCMT.mdb") Then
'Appel Fonction permettant de lier les tables
If LierTables(CurrentProject.path & "\AssoCMT.mdb") = False Then GoTo err_Maj
End If
 
'Controle champs Type de Membre
If Not (GetLinkedDBName("Type de Membre") = CurrentProject.path & "\AssoCMT.mdb") Then
'Appel Fonction permettant de lier les tables
If LierTables(CurrentProject.path & "\AssoCMT.mdb") = False Then GoTo err_Maj
End If
 
'Controle champs Classe cotisation
If Not (GetLinkedDBName("Classe cotisation") = CurrentProject.path & "\AssoCMT.mdb") Then
'Appel Fonction permettant de lier les tables
If LierTables(CurrentProject.path & "\AssoCMT.mdb") = False Then GoTo err_Maj
End If
 
'Controle champs TRégion
If Not (GetLinkedDBName("TRégion") = CurrentProject.path & "\DelCaCMT.mdb") Then
'Appel Fonction permettant de lier les tables
If LierTables(CurrentProject.path & "\DelCaCmt.mdb") = False Then GoTo err_Maj
End If
 
'Controle champs RégDept
If Not (GetLinkedDBName("RégDept") = CurrentProject.path & "\DelCaCMT.mdb") Then
'Appel Fonction permettant de lier les tables
If LierTables(CurrentProject.path & "\DelCaCmt.mdb") = False Then GoTo err_Maj
End If
 
'Controle champs Délcacmt
If Not (GetLinkedDBName("Délcal") = CurrentProject.path & "\DelCaCMT.mdb") Then
'Appel Fonction permettant de lier les tables
If LierTables(CurrentProject.path & "\DelCaCmt.mdb") = False Then GoTo err_Maj
MsgBox "Mise à jour des tables => Ok", , "Mise à jour"
End If
 
'Fermeture du Splash
DoCmd.Close
'Ouverture Formulaire
DoCmd.OpenForm "Switchboard"
Exit Sub
 
err_Maj:
MsgBox "Une erreur c'est produite pendant la mise à jour des tables", vbExclamation, "Mise à jour"
 
End Sub


Et bien sûr j'ai une erreur dès le démarrage
Phyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2007, 10h39   #14
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 740
Points : 8 740
Salut,

petite question as-tu réllement besoin d'avoir 2 Dorsales ?

sinon le code permet de mettre à jour toutes les tables en 1 seule fois, je m'explique ce bout de code de la fonction Lier_Tables permet de parcourir toutes les tables de la bdd en question :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 'Instancie la base courrante
    Set dbBase = CurrentDb
 
    'Boucle Parcourant toutes les tables de la Bdd en cours
    For Each tbdTables In dbBase.TableDefs
 
        'Teste l'attribut de la table pour savoir si c'est une table liée
        If tbdTables.Attributes And dbAttachedTable Then
            'Redéfini la propriété connect de la table avec la nouvelle base
            tbdTables.Connect = ";DATABASE=" & strChmFichier
            'Remet à jour la liaison de la table
            tbdTables.RefreshLink
        End If
 
    Next tbdTables
Donc au premier appel de de la fonction tu modifie la liaison de toutes tes tables de la bdd Frontale, sauf que certaines pointent vers la dorsale 2. Donc le code que j'ai laissé n'est pas bon, il faudrait mettre à jour table par table où bien n'avoir q'une Dorsale, du coup la maise à jour s'effectue en seule fois.

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2007, 17h04   #15
Invité régulier
 
Inscription : décembre 2004
Messages : 46
Détails du profil
Informations personnelles :
Âge : 69
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : décembre 2004
Messages : 46
Points : 9
Points : 9
A mon avis c'est parfait ainsi.

En effet, la Bdd Frontale (Assocmt.mdb) est tenu à jour par une seule personne qui gère les membres de l'association. Cependant elle va chercher des champs mis à jour dans la Dorsale1.

La Bdd dorsale1 est tenue à jour par une autre personne qui gère les délégués des régions à partir des données de la frontale. Elle se nomme DelCaCmt.mdb.

Ces deux bases sont liées entre elles. Celui qui gère la dorsale1, ne peut inscrire un délégué s'il n'est pas à jour de cotisation (notion prise dans la Bdd Frontale) etc... Celui qui gère les membres ne peut lister les membres d'une même région (4 à 8 départements) s'il n'a pas à jour la Bdd Dorsale etc...

Quant à le seconde dorsale, elle a très peu d'importance, elle permet à chaque délégués de noter ces propres informations qu'on ne peut marquer sur un fichier officiel. En fait cette Bdd ne voyage pas elle reprend les informations des deux principales. Donc la mise à jour de l'adresse pourra se faire facilement une seule fois par le menu Option Gestionnaire des tables liées notion que je peux ressortir sur la barre d'outil de la Bdd.

Encore merci, je teste le code pour les deux Bdd Principale et je te tiens au courant

Au fait ce dernier code il se met sur les deux tables ? et où ?? Je vais faire des essais
Phyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2007, 22h05   #16
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 740
Points : 8 740
Salut Phyl,
Citation:
Envoyé par Phyl
Au fait ce dernier code il se met sur les deux tables ? et où ?? Je vais faire des essais
En fait ce dernier code est extrait de la Fonction Lier_Tables.

Comme je te disais cette fonction lie toutes les tables liées de la Frontale, donc si tu as 2 dorsales, il faut adapter ce code pour chaque tables.

C'est possible de le faire, c'est pour cela que je te demandais si tu voulais absoluent 2 Dorsales ?

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 14h26   #17
Invité régulier
 
Inscription : décembre 2004
Messages : 46
Détails du profil
Informations personnelles :
Âge : 69
Localisation : France, Maine et Loire (Pays de la Loire)

Informations forums :
Inscription : décembre 2004
Messages : 46
Points : 9
Points : 9
Merci beaucoup Dolphy,

Maintenant tout fonctionne parfaitement. Les deux tables principales se connectent comme oil faut avec les dernières données du Code et les modifications que j'avais faites sur le code du formulaire Splach.

Quant à la dorsale 2, j'avais beaucoup de soucis dans la liaison des 2 dorsale. En fait j'ai supprimé la liaison des 2 dorsales et j'ai uniquement la liaison automatisée entre une frontale et dorsale;

Ainsi, tout est parfait.

Merci beaucoup
Phyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h04.


 
 
 
 
Partenaires

Hébergement Web