Lier une table

Le
Jacques
Bonjour,

Quelle est la différence entre ces deux codes de liaison des tables

Je pose la question parce que lorsque j'utilise cette fonction celle-ci me =
crée une table liée.

Set Db = CurrentDb
' Définit la chaîne de connexion
strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:.mdb"
' Crée la nouvelle table
Set Tbl = Db.CreateTableDef(strNomTable)
With Tbl
.Connect = strConnect
.SourceTableName = strNomTable
End With
' Ajoute la table à la base de données
Db.TableDefs.Append Tbl: Db.TableDefs.Refresh



Par contre avec cette fonction, si la liaison existe ou est corrompue, la l=
iaison est mise à jour, mais si la liaison n'existe pas elle ne me crée=
pas de liaison.

'Boucle Parcourant toutes les tables de la Bdd en cours
For Each TblTables In dbBase.TableDefs
'Teste l'attribut de la table pour savoir si c'est une table liée
If TblTables.Attributes And dbAttachedTable Then
'Redéfini la propriété connect de la table avec la nouvel=
le base
TblTables.Connect = ";DATABASE=" & strChmFichier
'Remet à jour la liaison de la table
TblTables.RefreshLink
End If
Next TblTables


Est-ce que cela est normal comme fonctionnement, ou est-ce moi qui ne les u=
tilise pas correctement ?

Merci pour votre aide.

Salutations
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gloops
Le #25277092
Jacques a écrit, le 12/03/2013 11:11 :
Bonjour,

Quelle est la différence entre ces deux codes de liaison des tables

Je pose la question parce que lorsque j'utilise cette fonction celle-ci me crée une table liée.

Set Db = CurrentDb
' Définit la chaîne de connexion
strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:.mdb"
' Crée la nouvelle table
Set Tbl = Db.CreateTableDef(strNomTable)
With Tbl
.Connect = strConnect
.SourceTableName = strNomTable
End With
' Ajoute la table à la base de données
Db.TableDefs.Append Tbl: Db.TableDefs.Refresh



Par contre avec cette fonction, si la liaison existe ou est corrompue, la liaison est mise à jour, mais si la liaison n'existe pas elle ne me crée pas de liaison.

'Boucle Parcourant toutes les tables de la Bdd en cours
For Each TblTables In dbBase.TableDefs
'Teste l'attribut de la table pour savoir si c'est une table l iée
If TblTables.Attributes And dbAttachedTable Then
'Redéfini la propriété connect de la table avec la n ouvelle base
TblTables.Connect = ";DATABASE=" & strChmFichier
'Remet à jour la liaison de la table
TblTables.RefreshLink
End If
Next TblTables


Est-ce que cela est normal comme fonctionnement, ou est-ce moi qui ne l es utilise pas correctement ?

Merci pour votre aide.

Salutations




Ben oui, c'est normal, CreateTableDef signifie créer une table, alors
que RefreshLink signifie rafraîchir le lien.
Si la liaison n'existe pas et qu'il n'y a pas de lien corrompu ... alors
c'est qu'il ne s'agit pas d'une table liée, si ?
Si les attributs de la table incluent dbAttachedTable, c'est que c'est
une table liée ... Donc, la table non liée n'est pas traitée, CQFD.

--
Publicité
Poster une réponse
Anonyme