2010-11-22 15 views
1

Hey. J'ai la base de données d'accès principale située sur un PC autonome hors du réseau et j'ai une base de données d'accès avec des tables liées sur le réseau lié au PC autonome. J'ai lié les tables en créant un partage réseau sur le PC autonome et en les reliant par un chemin. Puis-je le configurer de sorte que lorsque la base de données est ouverte, il met automatiquement à jour les tables liées. Benrafraîchir les tables liées en accès

+0

pouvez-vous reformuler en utilisant sans équivoque termes ? Où est votre front-end et où est votre back-end. Quoi qu'il en soit, si vous avez des tables liées, elles sont mises à jour lorsque vous les mettez à jour. Dans quel but ? –

+0

Avez-vous googlé "mettre à jour les tables liées à l'accès"? Si non, pourquoi pas? C'est l'une des questions d'accès les plus courantes et il a été répondu à un milliard de fois par million de formes de mille manières différentes. –

Répondre

1

Vous pouvez. Je trouve souvent pratique d'utiliser un petit chèque qui s'exécute au démarrage (défini par les options de démarrage) et vérifie une variété de choses, y compris les tables liées. À cette fin, je tiens également une table de tables liées sur la machine locale, bien qu'une liste de tables liées puisse être obtenue en itérant à travers la collection TableDefs, je pense qu'il est un peu plus sûr de garder une liste.

Le formulaire de vérification peut vérifier tous les liens et si un lien est brisé ou manquant, soit demander à l'utilisateur un nouvel emplacement ou utiliser un emplacement fixe. Si aucun problème n'est trouvé, le formulaire peut se fermer et ouvrir un menu ou un autre formulaire.

Dans le cas de rattachement à une table liée, il est possible d'obtenir la connexion à utiliser à partir de:

CurrentDB.TableDefs("TableName").Connection 

Voici quelques notes:

Sub RelinkTables(Optional strConnect As String = "") 
Dim db As DAO.Database 
Dim rs As DAO.Recordset 
Dim strSQL 
Dim tdf As DAO.TableDef 

On Error GoTo TrapError 

    Set db = CurrentDb 

    If strConnect = "" Then 
     ''Where Me.txtNewDataDirectory is a control on the check form 
     strConnect = "MS Access;PWD=databasepassword;DATABASE=" & Me.txtNewDataDirectory 
    End If 

    ''Table of tables to be linked with two fields TableName, TableType 
    Set rs = CurrentDb.OpenRecordset("Select TableName From sysTables " _ 
      & "WHERE TableType = 'LINK'") 

    Do While Not RS.EOF 
     ''Check if the table is missing 
     If IsNull(DLookup("[Name]", "MSysObjects", "[Name]='" & rs!TableName & "'")) Then 
      Set tdf = db.CreateTableDef(RS!TableName, dbAttachSavePWD, _ 
       rs!TableName, strConnect) 
      ''If the table is missing, append it 
      db.TableDefs.Append tdf 
     Else 
      ''If it exists, update the connection 
      db.TableDefs(rs!TableName).Connect = strConnect 
     End If 
     db.TableDefs(rs!TableName).RefreshLink 
     RS.MoveNext 
    Loop 

    Set db = Nothing 
    RS.Close 
    Set RS = Nothing 


Exit_Sub: 
    Exit Sub 

TrapError: 
    HandleErr Err.Number, Err.Description, "Relink Tables" 

End Sub