Accueil > > > RATTACHEMENT DE TABLE AUTOMATIQUE ACCESS
RATTACHEMENT DE TABLE AUTOMATIQUE ACCESS
Information sur la source
Description
ce petit truc me permet de mettre à jour facilement le rattachement des tables d'une application access à partir d'un fichier ini (défini dans la fonction rattache table). C'est idéal quand on doit livrer une appli access et que l'environnement de dev n'est pas le même que l'environnement (ou les environnements) de production. F_Rattache table est une fonction car cela me permet de l'appeller directement d'une macro ;-)
Source
- Public Function F_RattacheTable(szFichier As String) As Boolean
- F_RattacheTable = True
- Dim TableEnCours As TableDef
- Dim TableNouvel As TableDef
- Dim szLgnINI As String
- Set db = CurrentDb
- 'ouverture du fichier ini
- Set obj = CreateObject("Scripting.FileSystemObject")
- szFichierIni = Application.CurrentProject.Path & "\" & szFichier
- ' si le fichier n'existe pas on le crée (premier passage)
- If Not obj.FileExists(szFichierIni) Then
- P_genTableIni (szFichierIni)
- Else
- Set objFichierINI = obj.OpenTextFile(szFichierIni, 1, 0)
- 'boucle infinie jusqu'à la fin du fichier
- Do
- On Error Resume Next
- szLgnINI = objFichierINI.ReadLine
- ' pour gerer simplemement la fin du fichier
- If Err.Number > 0 Then
- Exit Do
- End If
- ' boucle sur la liste des tables présente
- bTopTrouve = False
- For Each TableEnCours In db.TableDefs
- 'on vérifie que c'est la bonne table
- If TableEnCours.SourceTableName = Trim(Left(szLgnINI, InStr(1, szLgnINI, "=") - 1)) Then
- 'mise à jours du lien ssi il a changé
- If TableEnCours.Connect <> Mid(szLgnINI, InStr(1, szLgnINI, "=") + 1) Then
- ' on met à jour la liaison seulement si la base à connecté est accessible
- If obj.FileExists(Mid(szLgnINI, InStr(1, szLgnINI, "=") + 1)) The
- TableEnCours.Connect = Mid(szLgnINI, InStr(1, szLgnINI, "=") + 1)
- TableEnCours.RefreshLink
- end if
- End If
- ' si a traité la bonne table on sort du next et on passe à la ligne suivante du fichier
- bTopTrouve = True
- Exit For
- End If
- Next
- ' si la table n'est pas présente dans la liste des tables on crée le lien
- If Not bTopTrouve Then
- ' on crée le lien seulement si la base est accessible
- If obj.FileExists(Mid(szLgnINI, InStr(1, szLgnINI, "=") + 1)) The
- Set TableNouvel = db.CreateTableDef(Trim(Left(szLgnINI, InStr(1, szLgnINI, "=") - 1)))
- TableNouvel.Connect = Mid(szLgnINI, InStr(1, szLgnINI, "=") + 1)
- TableNouvel.RefreshLink
- TableNouvel.SourceTableName = Trim(Left(szLgnINI, InStr(1, szLgnINI, "=") - 1))
- TableNouvel.RefreshLink
- db.TableDefs.Append TableNouvel
- end if
- End If
- Loop
- objFichierINI.Close
- Set objFichierINI = Nothing
- End If
-
- ' fermeture des objets
- Set obj = Nothing
- Set db = Nothing
- End Function
-
- Public Sub P_genTableIni(szNewFichierIni As String)
- Dim TableEnCours As TableDef
- Dim szLgnINI As String
- Set db = CurrentDb
- 'ouverture du fichier ini
- Set obj = CreateObject("Scripting.FileSystemObject")
- obj.CreateTextFile szNewFichierIni, True
- Set objfINI = obj.GetFile(szNewFichierIni)
- Set objWritINI = objfINI.openAsTextStream(8)
-
- ' récupération du paramétrage
- For Each TableEnCours In db.TableDefs
- If Len(TableEnCours.Connect) > 0 Then
- szLgnINI = TableEnCours.SourceTableName & "=" & TableEnCours.Connect
- objWritINI.WriteLine (szLgnINI)
- End If
- Next
-
- ' fermeture des objets
- objWritINI.Close
- Set objFichierINI = Nothing
- Set objfINI = Nothing
- Set obj = Nothing
- Set db = Nothing
- End Sub
-
Public Function F_RattacheTable(szFichier As String) As Boolean
F_RattacheTable = True
Dim TableEnCours As TableDef
Dim TableNouvel As TableDef
Dim szLgnINI As String
Set db = CurrentDb
'ouverture du fichier ini
Set obj = CreateObject("Scripting.FileSystemObject")
szFichierIni = Application.CurrentProject.Path & "\" & szFichier
' si le fichier n'existe pas on le crée (premier passage)
If Not obj.FileExists(szFichierIni) Then
P_genTableIni (szFichierIni)
Else
Set objFichierINI = obj.OpenTextFile(szFichierIni, 1, 0)
'boucle infinie jusqu'à la fin du fichier
Do
On Error Resume Next
szLgnINI = objFichierINI.ReadLine
' pour gerer simplemement la fin du fichier
If Err.Number > 0 Then
Exit Do
End If
' boucle sur la liste des tables présente
bTopTrouve = False
For Each TableEnCours In db.TableDefs
'on vérifie que c'est la bonne table
If TableEnCours.SourceTableName = Trim(Left(szLgnINI, InStr(1, szLgnINI, "=") - 1)) Then
'mise à jours du lien ssi il a changé
If TableEnCours.Connect <> Mid(szLgnINI, InStr(1, szLgnINI, "=") + 1) Then
' on met à jour la liaison seulement si la base à connecté est accessible
If obj.FileExists(Mid(szLgnINI, InStr(1, szLgnINI, "=") + 1)) The
TableEnCours.Connect = Mid(szLgnINI, InStr(1, szLgnINI, "=") + 1)
TableEnCours.RefreshLink
end if
End If
' si a traité la bonne table on sort du next et on passe à la ligne suivante du fichier
bTopTrouve = True
Exit For
End If
Next
' si la table n'est pas présente dans la liste des tables on crée le lien
If Not bTopTrouve Then
' on crée le lien seulement si la base est accessible
If obj.FileExists(Mid(szLgnINI, InStr(1, szLgnINI, "=") + 1)) The
Set TableNouvel = db.CreateTableDef(Trim(Left(szLgnINI, InStr(1, szLgnINI, "=") - 1)))
TableNouvel.Connect = Mid(szLgnINI, InStr(1, szLgnINI, "=") + 1)
TableNouvel.RefreshLink
TableNouvel.SourceTableName = Trim(Left(szLgnINI, InStr(1, szLgnINI, "=") - 1))
TableNouvel.RefreshLink
db.TableDefs.Append TableNouvel
end if
End If
Loop
objFichierINI.Close
Set objFichierINI = Nothing
End If
' fermeture des objets
Set obj = Nothing
Set db = Nothing
End Function
Public Sub P_genTableIni(szNewFichierIni As String)
Dim TableEnCours As TableDef
Dim szLgnINI As String
Set db = CurrentDb
'ouverture du fichier ini
Set obj = CreateObject("Scripting.FileSystemObject")
obj.CreateTextFile szNewFichierIni, True
Set objfINI = obj.GetFile(szNewFichierIni)
Set objWritINI = objfINI.openAsTextStream(8)
' récupération du paramétrage
For Each TableEnCours In db.TableDefs
If Len(TableEnCours.Connect) > 0 Then
szLgnINI = TableEnCours.SourceTableName & "=" & TableEnCours.Connect
objWritINI.WriteLine (szLgnINI)
End If
Next
' fermeture des objets
objWritINI.Close
Set objFichierINI = Nothing
Set objfINI = Nothing
Set obj = Nothing
Set db = Nothing
End Sub
Conclusion
Au lancement, - si le fichier ini n'existe pas, il est crée à partir des paramètres de liaison définie dans la base. -Sinon, il en utilisera les paramètres pour mettre à jour (si besoin) le lien vers les bonnes bases.
La structure du fichier ini est la suivante : NomDeLaTable=CheminDeLaTable
Historique
- 31 juillet 2004 18:56:53 :
- 31/07/04 : si la table est dans le fichier mais n'existe pas dans la base, le lien est crée
- 12 février 2010 17:59:00 :
- 12/02/2010 : petite amélioration pour tester que la base à rattacher existe
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
les etats access [ par henri ]
comment faire pour imprimer un etat access par un code VisualBasic ?
VB & Access 2000 [ par Uther ]
J'aimerais savoir comment faire pour connecter un DAO datacontrol à une BD Access 2000 sans que le message de "Base de donnee invalide" n'intervienne.
Copier un etat access vers Excel [ par Ol ]
Je voudrais copier un etat access (un tableau) vers Excel sans perdre la mise en page (ou le moins possible).Comment faire??
Exécutable avec Access [ par janus ]
Nous avons problème à créer un exécutable en utilisant Vb avec Access, en considérant que le logiciel Access ne doit pas être obligatoire.C'est à dire
enregistrer un document word [ par Christian ]
Bonjour à tous, et bravo pour la qualité de ce site sur VB "En Français".Depuis quelques jours je me prend la tête pour enregistrer un document Word à
Imprimer état Access sous VB [ par janus ]
Le problème est de pouvoir imprimer un état Access sous VB, et ce sans que le logiciel Access ne s'ouvre.Merci d'avance
Accès à une base de donnée Access sous VB [ par lolo ]
J'aimerais réaliser une sorte de moteur de recherche en VB :il y a différents champs à remplir par l'utilisateur; une fois ces derniers remplis l'appl
VB et formulaires access [ par jabri ]
Est ce posssible d'appeler à partir d'un programme VB un formulaire appartenet a access (en gardant le look access) et comment merci...
Outlook et Access 2000 [ par taz ]
Comment exporter ou importer les informations du calendrier d'Outlook 2000 ans Access 2000
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|