Base ACCESS 2010 fractionnée et liaison UNC
Fermé
Maud
-
Modifié par Maud le 5/10/2012 à 00:39
blux Messages postés 26504 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 4 décembre 2024 - 26 nov. 2012 à 16:21
blux Messages postés 26504 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 4 décembre 2024 - 26 nov. 2012 à 16:21
A voir également:
- Base ACCESS 2010 fractionnée et liaison UNC
- Clé activation office 2010 gratuit - Télécharger - Sécurité
- Formules excel de base - Guide
- Telecharger word 2010 - Télécharger - Traitement de texte
- Fracture 2010 film complet youtube - Forum TV & Vidéo
- Gigaset a170h problème base ✓ - Forum telephonie fixe
60 réponses
(hors table TblLiaisonDorsale) : cette table figure dans le frontal
Toutes les tables contenues dans la dorsale sont bien liées
Toutes les tables contenues dans la dorsale sont bien liées
la frontale est la base que voit l'utilisateur, et la dorsale est celle qui contient les tables :
Tout à fait d'accord
les tables contenues dans la dorsale sont liées, en fait, pour moi, c'est le contraire :
Je pense que l'on parle de la même chose : quand on regarde la liste des tables dans la frontale, on voit :
- d'une part celles qui sont propres à la frontale
- d'autre part les tables liées à la dorsale
OK?
Tout à fait d'accord
les tables contenues dans la dorsale sont liées, en fait, pour moi, c'est le contraire :
Je pense que l'on parle de la même chose : quand on regarde la liste des tables dans la frontale, on voit :
- d'une part celles qui sont propres à la frontale
- d'autre part les tables liées à la dorsale
OK?
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
15 oct. 2012 à 15:04
15 oct. 2012 à 15:04
On est d'accord.
As-tu pu regarder ce qui était dans la base stockée chez free ?
As-tu réussi un peu à comprendre l'enchainement ?
As-tu pu regarder ce qui était dans la base stockée chez free ?
As-tu réussi un peu à comprendre l'enchainement ?
Mes connaissances en code sont trop limitées pour comprendre.....
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
15 oct. 2012 à 17:20
15 oct. 2012 à 17:20
Ce n'est pourtant pas compliqué, il s'agit de récupérer une valeur dans une table et de s'en servir lorsque l'on fait une boucle sur les tables de la base courante pour mettre à jour leurs attaches.
Dans le cas qui nous intéresse, il suffit d'aller chercher dans la table la valeur du booléen de "première visite" et dans le cas où il est vrai d'ouvrir une boite de dialogue pour sélectionner un fichier mdb, récupérer son chemin complet et le passer en paramètre de la boucle qui met à jour les attaches.
Dans le cas qui nous intéresse, il suffit d'aller chercher dans la table la valeur du booléen de "première visite" et dans le cas où il est vrai d'ouvrir une boite de dialogue pour sélectionner un fichier mdb, récupérer son chemin complet et le passer en paramètre de la boucle qui met à jour les attaches.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
Modifié par blux le 16/10/2012 à 14:53
Modifié par blux le 16/10/2012 à 14:53
Voici donc un peu de code que tu vas mettre dans un module access.
Ensuite, tu pourras créer un bouton sur ton formulaire et faire référence à ce module simplement en l'appelant (évènement sur clic du bouton) :
Essaie de faire tourner ceci d'abord, on verra ensuite pour le test de la première visite.
A+ blux
Sub MAJ() Dim Db As Database Dim Tb As TableDef Dim Unc As String Dim Rep As Integer Dim Fd As FileDialog Dim SelectedFile As Variant Dim NomBase As String ' Ouverture d'une boite de dialogue pour choix de la base à lier Set Fd = FileDialog(msoFileDialogOpen) With Fd .AllowMultiSelect = False .ButtonName = "Ouvrir" .Filters.Clear .Filters.Add "Bases Access", "*.mdb" .InitialFileName = "*.mdb" .InitialView = msoFileDialogViewList .Title = "sélectionnez un fichier" If .Show Then For Each SelectedFile In .SelectedItems NomBase = SelectedFile Next SelectedFile End If End With Set Fd = Nothing ' Mise à jour des attaches Set Db = CurrentDb Unc = ";DATABASE=" & NomBase ' Test des attachements ' On exclut les tables système ' ainsi que les tables non attachées For Each Tb In Db.TableDefs If Left(Tb.Name, 4) <> "MSys" And Tb.Connect <> "" Then MsgBox "Table :" & Tb.Name & vbCrLf & "actuellement attachée à" & vbCrLf & "Chemin : " & Tb.Connect Rep = MsgBox("Mettre à jour la table " & Tb.Name & vbCrLf & "pour pointer sur " & Unc & " ?", vbYesNo, "Confirmation...") If Rep = vbYes Then Tb.Connect = Unc Tb.RefreshLink End If End If Next Set Db = Nothing End Sub
Ensuite, tu pourras créer un bouton sur ton formulaire et faire référence à ce module simplement en l'appelant (évènement sur clic du bouton) :
Private Sub Commande10_Click() MAJ End Sub
Essaie de faire tourner ceci d'abord, on verra ensuite pour le test de la première visite.
A+ blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
C'est fait.
Par contre, quand je clique sur le bouton, il m'envoie un message d'erreur :
=> sur la ligne Fd Dim As FileDialog
Erreur de compilation :
Type défini par l'utilisateur non défini
Par ailleurs, je t'avais déjà signalé que mon formulaire MENU qui s'ouvre au démarrage (avec macro Autoexec) est adossé à une table qui se trouve dans la dorsale. Est-ce que ça pose problème?
Par contre, quand je clique sur le bouton, il m'envoie un message d'erreur :
=> sur la ligne Fd Dim As FileDialog
Erreur de compilation :
Type défini par l'utilisateur non défini
Par ailleurs, je t'avais déjà signalé que mon formulaire MENU qui s'ouvre au démarrage (avec macro Autoexec) est adossé à une table qui se trouve dans la dorsale. Est-ce que ça pose problème?
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
16 oct. 2012 à 19:51
16 oct. 2012 à 19:51
Tu l'appelles comme tu veux, l'important sera de le nommer correctement quand on voudra l'exécuter :-)
Pour l'erreur du code, il faut que tu rattaches Microsoft Office xx.x object library et Microsoft DAO xx.x object library à ton projet.
Lorsque le code est planté, tu cliques sur le bouton 'arrêter' (un carré bleu qui fait réinitialiser), tu vas ensuite dans 'outils/références et tu coches ce que j'ai indiqué.
Pour l'erreur du code, il faut que tu rattaches Microsoft Office xx.x object library et Microsoft DAO xx.x object library à ton projet.
Lorsque le code est planté, tu cliques sur le bouton 'arrêter' (un carré bleu qui fait réinitialiser), tu vas ensuite dans 'outils/références et tu coches ce que j'ai indiqué.
C'est fait.
Un nouveau message s'est affiché " Nom de module, de projet ou de bibliothèque d'objets déjà utilisé"
J'ai cliqué sur OK.
Quand je clique à nouveau sur le bouton que j'ai créé sur le formulaire "MENU", le même message d'anomalie (Erreur de compilation..) apparaît.
Par contre, le menu déroulant n'apparaît plus lorsque je clique sur "Réinitialisation"....
Un nouveau message s'est affiché " Nom de module, de projet ou de bibliothèque d'objets déjà utilisé"
J'ai cliqué sur OK.
Quand je clique à nouveau sur le bouton que j'ai créé sur le formulaire "MENU", le même message d'anomalie (Erreur de compilation..) apparaît.
Par contre, le menu déroulant n'apparaît plus lorsque je clique sur "Réinitialisation"....
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 08:58
17 oct. 2012 à 08:58
Quel menu déroulant ?
Les deux références que j'ai indiquées sont-elles bien cochées ?
Les deux références que j'ai indiquées sont-elles bien cochées ?
Oublie l'histoire du menu déroulant (il était tard...).
Quand je refais la manip, je m'aperçois que les 2 références ne sont plus cochées, donc je les re-coche et fais OK. Et là le message " Nom de module, de projet ou de bibliothèque d'objets déjà utilisé" apparaît tout de suite...
Quand je refais la manip, je m'aperçois que les 2 références ne sont plus cochées, donc je les re-coche et fais OK. Et là le message " Nom de module, de projet ou de bibliothèque d'objets déjà utilisé" apparaît tout de suite...
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 10:01
17 oct. 2012 à 10:01
Si tu as la fenêtre de code affichée, alors tu dois pouvoir aller dans outils/références.
Sinon, quel est le message d'erreur exact et sur quelle ligne ?
Sinon, quel est le message d'erreur exact et sur quelle ligne ?
Je reprends :
- je clique sur le bouton que j'ai créé dans le menu pour lancer le module, j'ai un message d'erreur :
=> sur la ligne Fd Dim As FileDialog
Erreur de compilation :
Type défini par l'utilisateur non défini
Je fais donc ce que tu m'a dit, à savoir OK, Réinitialiser, et dans Outils/références je coche les 2 que tu m'as indiquées (Microsoft DAO 3.6 Object librairy et Microsoft office 14.0 Object librairy) puis je clique sur OK.
Et là le message " Nom de module, de projet ou de bibliothèque d'objets déjà utilisé" apparaît tout de suite...
- je clique sur le bouton que j'ai créé dans le menu pour lancer le module, j'ai un message d'erreur :
=> sur la ligne Fd Dim As FileDialog
Erreur de compilation :
Type défini par l'utilisateur non défini
Je fais donc ce que tu m'a dit, à savoir OK, Réinitialiser, et dans Outils/références je coche les 2 que tu m'as indiquées (Microsoft DAO 3.6 Object librairy et Microsoft office 14.0 Object librairy) puis je clique sur OK.
Et là le message " Nom de module, de projet ou de bibliothèque d'objets déjà utilisé" apparaît tout de suite...
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 10:18
17 oct. 2012 à 10:18
Il y a truc qui m'échappe, normalement, quand on coche les références, elles doivent rester cochées...
As-tu enregistré le module après avoir coché ?
Quelle version d'access ?
As-tu enregistré le module après avoir coché ?
Quelle version d'access ?
Je n'ai pas l'occasion de l'enregistrer, le message d'erreur apparaît tout de suite. Et quand je reviens sur la liste, les 2 références sont décochées.
Je suis sur Access 2010
Je suis sur Access 2010
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 10:29
17 oct. 2012 à 10:29
Alors, ouvre le module comme si tu voulais le modifier, coche les deux cases, et enregistre.
Réessaie ensuite.
Ca me surprend...
Réessaie ensuite.
Ca me surprend...
Il ne me laisse pas le temps d'enregistrer, il m'envoie le message d'erreur tout de suite.
Avant de faire toutes ces manip (création de code, bouton sur menu, etc...), j'avais fait une copie de ma base.
J'ai refais une nouvelle copie et ai recommencé toutes les manip, hélas j'arrive au même résultat..
Avant de faire toutes ces manip (création de code, bouton sur menu, etc...), j'avais fait une copie de ma base.
J'ai refais une nouvelle copie et ai recommencé toutes les manip, hélas j'arrive au même résultat..
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 10:52
17 oct. 2012 à 10:52
Dans le menu outils/options de la fenêtre de code (accessible via ALT-F11), tu peux décocher 'vérification automatique de la syntaxe' et 'déclaration des variables obligatoires' et vérifier ce que tu as dans l'onglet général, section 'récupération d'erreur' du même menu ?
'déclaration des variables obligatoires' était déjà décoché.
Dans "Récupération d'erreur, seul "Arrêt sur les erreurs non gérées" est coché
Dans "Récupération d'erreur, seul "Arrêt sur les erreurs non gérées" est coché
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 11:02
17 oct. 2012 à 11:02
Ca change quelque chose ?
Non
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
17 oct. 2012 à 11:15
17 oct. 2012 à 11:15
Bonjour a vous deux,
Aucune incruste de ma part, Blux vous manage a merveille.
Quand vous ouvrez outils---->references
Quelles sont les references deja cochees
Aucune incruste de ma part, Blux vous manage a merveille.
Quand vous ouvrez outils---->references
Quelles sont les references deja cochees
les 5 premières à savoir :
- Visual Basic for applications
- Microsoft Access 14.0 Object library
- OLE Automation
- Microsoft Visual Basic for Application extensibility 5...
- Microsoft Office 14.0 Access database engine Object
- Visual Basic for applications
- Microsoft Access 14.0 Object library
- OLE Automation
- Microsoft Visual Basic for Application extensibility 5...
- Microsoft Office 14.0 Access database engine Object
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
Modifié par f894009 le 17/10/2012 à 12:11
Modifié par f894009 le 17/10/2012 à 12:11
Re,
vous n'avez pas besoin de rajouter Microsoft DAO 3.6 Object librairy, Microsoft Office 14.0 Access database engine Object fait la meme chose et c'est pour cela qu'il y une erreur "de bibliothèque d'objets déjà utilisé". Que tout le monde se rassure c'est par hazard que l'ai decouvert la chose, parce que j'ai toujours utilise DAO3.6 sauf une fois ou j'ai coche Microsoft Office xx.0 Access database engine Object .
Essayez
vous n'avez pas besoin de rajouter Microsoft DAO 3.6 Object librairy, Microsoft Office 14.0 Access database engine Object fait la meme chose et c'est pour cela qu'il y une erreur "de bibliothèque d'objets déjà utilisé". Que tout le monde se rassure c'est par hazard que l'ai decouvert la chose, parce que j'ai toujours utilise DAO3.6 sauf une fois ou j'ai coche Microsoft Office xx.0 Access database engine Object .
Essayez
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 12:52
17 oct. 2012 à 12:52
Je viens de faire le test, effectivement cette bibliothèque semble couvrir les besoins fournis par DAO 3.x.
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
17 oct. 2012 à 13:01
17 oct. 2012 à 13:01
Bonjour,
Venant du VB4, 5, 6 comme beaucoup d'entre-nous, DAO3.x etait incontournable pour les appli. VB installees sur des PC sans ACCESS. Par habitude, meme en VBA ACCESS ou EXCEL DAO3.x etait de mise. Mais c'est cette denomination "database engine Object" qui m'avait interpelee.
Bonne suite
Venant du VB4, 5, 6 comme beaucoup d'entre-nous, DAO3.x etait incontournable pour les appli. VB installees sur des PC sans ACCESS. Par habitude, meme en VBA ACCESS ou EXCEL DAO3.x etait de mise. Mais c'est cette denomination "database engine Object" qui m'avait interpelee.
Bonne suite
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 13:09
17 oct. 2012 à 13:09
Jamais fait de VB pur, toujours fait que du VBA access (et un peu excel)...
En tout cas, merci pour l'info, on aurait sûrement mis du temps pour la trouver, celle-là ;-)
En tout cas, merci pour l'info, on aurait sûrement mis du temps pour la trouver, celle-là ;-)
Merci pour l'info.
Cette foi-ci c'est OK. Quand je lance le module, la fenêtre "Sélectionner un fichier" s'ouvre.
Bravo!
Cette foi-ci c'est OK. Quand je lance le module, la fenêtre "Sélectionner un fichier" s'ouvre.
Bravo!
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 13:12
17 oct. 2012 à 13:12
Bon, on peut donc aller plus en avant.
Pour l'instant, la procédure est bavarde, elle pose la question pour toutes les tables une par une et ne gère pas le fait que l'utilisateur puisse ne rien sélectionner.
Souhaites-tu que l'on mette uniquement un message de confirmation quant au choix de la base et que l'on fasse le traitement pour toutes les tables de manière transparente ?
On en profitera aussi pour tester si un choix a été fait...
Pour l'instant, la procédure est bavarde, elle pose la question pour toutes les tables une par une et ne gère pas le fait que l'utilisateur puisse ne rien sélectionner.
Souhaites-tu que l'on mette uniquement un message de confirmation quant au choix de la base et que l'on fasse le traitement pour toutes les tables de manière transparente ?
On en profitera aussi pour tester si un choix a été fait...
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
Modifié par blux le 17/10/2012 à 14:54
Modifié par blux le 17/10/2012 à 14:54
Donc, le code donne ça :
A+ blux
Sub MAJ() Dim Db As Database Dim Tb As TableDef Dim Unc As String Dim Rep As Integer Dim Fd As FileDialog Dim SelectedFile As Variant Dim NomBase As String ' Ouverture d'une boite de dialogue pour choix de la base à lier Set Fd = FileDialog(msoFileDialogOpen) With Fd .AllowMultiSelect = False .ButtonName = "Ouvrir" .Filters.Clear .Filters.Add "Bases Access", "*.mdb" .InitialFileName = "*.mdb" .InitialView = msoFileDialogViewList .Title = "sélectionnez un fichier" If .Show Then For Each SelectedFile In .SelectedItems NomBase = SelectedFile Next SelectedFile End If End With Set Fd = Nothing If NomBase <> "" Then Rep = MsgBox("Mettre à jour les attaches de la base" & vbCrLf & "pour pointer sur " & NomBase & " ?", vbYesNo, "Confirmation...") If Rep = vbYes Then Set Db = CurrentDb Unc = ";DATABASE=" & NomBase ' Test des attachements ' On exclut les tables système ' ainsi que les tables non attachées For Each Tb In Db.TableDefs If Left(Tb.Name, 4) <> "MSys" And Tb.Connect <> "" Then Tb.Connect = Unc Tb.RefreshLink End If Next Set Db = Nothing End If End If End Sub
A+ blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
Ce nouveau code est bien à mettre à la place du précédent?
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 15:47
17 oct. 2012 à 15:47
Absolument, en annule et remplace...
C'est fait.
Lorsque je teste, et que la fenêtre "Sélectionner un fichier" s'ouvre, je n'ai accès qu'au type de fichier "Bases Access (*.mdb). Il me faudrait aussi les autres (*.accdb;*.accde;*.accdr)
Lorsque je teste, et que la fenêtre "Sélectionner un fichier" s'ouvre, je n'ai accès qu'au type de fichier "Bases Access (*.mdb). Il me faudrait aussi les autres (*.accdb;*.accde;*.accdr)
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
Modifié par blux le 17/10/2012 à 16:25
Modifié par blux le 17/10/2012 à 16:25
Je doute fort que tu aies besoin d'accéder à une base sous format accde (puisque c'est normalement le format de ta frontale).
Quoi qu'il en soit, il te suffit de modifier le code de ces quelques lignes en gras :
Et si tu connais le nom de ta dorsale, tu peux même le mettre dans initialfilename...
Quoi qu'il en soit, il te suffit de modifier le code de ces quelques lignes en gras :
.Filters.Clear .Filters.Add "Bases Access", "*.mdb;*.accdb;*.accde;*.accdr", 1 .InitialFileName = "" .InitialView = msoFileDialogViewList
Et si tu connais le nom de ta dorsale, tu peux même le mettre dans initialfilename...
Et si tu connais le nom de ta dorsale, tu peux même le mettre dans initialfilename... : je préfère laisser "*.mdb;*.accdb;*.accde;*.accdr", 1
afin de lier une dorsale avec un nom différent si besoin ( ex : fichier sauvegardé avec un nom différent)
Par contre, j'avais un message d'anomalie pour cette ligne itfilename.... "Erreur de compilation, Errreur de syntaxe".
J'ai retiré le "1" en fin de ligne, et là.......C'EST PARFAIT, j'arrive à modifier ma dorsale (nom et/ou chemin) à volonté!!!
Est-ce qu'en l'état le contrôle de la liaison se fait également à l'ouverture de la base ou est-ce qu'il reste encore quelque chose à paramétrer?
afin de lier une dorsale avec un nom différent si besoin ( ex : fichier sauvegardé avec un nom différent)
Par contre, j'avais un message d'anomalie pour cette ligne itfilename.... "Erreur de compilation, Errreur de syntaxe".
J'ai retiré le "1" en fin de ligne, et là.......C'EST PARFAIT, j'arrive à modifier ma dorsale (nom et/ou chemin) à volonté!!!
Est-ce qu'en l'état le contrôle de la liaison se fait également à l'ouverture de la base ou est-ce qu'il reste encore quelque chose à paramétrer?
blux
Messages postés
26504
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 décembre 2024
3 317
17 oct. 2012 à 18:45
17 oct. 2012 à 18:45
Il faut gérer la première visite...
15 oct. 2012 à 14:29
Pour moi, la frontale est la base que voit l'utilisateur, et la dorsale est celle qui contient les tables.
Or tu dis que les tables contenues dans la dorsale sont liées, en fait, pour moi, c'est le contraire.
Est-on d'accord ?