Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lier une table

1 réponse
Avatar
Jacques
Bonjour,

Quelle est la diff=E9rence entre ces deux codes de liaison des tables

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

Set Db =3D CurrentDb
' D=E9finit la cha=EEne de connexion=20
strConnect =3D "MS Access;pwd=3D" & strMotPasse & ";DATABASE=3DC:\.mdb"
' Cr=E9e la nouvelle table
Set Tbl =3D Db.CreateTableDef(strNomTable)
With Tbl
.Connect =3D strConnect
.SourceTableName =3D strNomTable
End With
' Ajoute la table =E0 la base de donn=E9es
Db.TableDefs.Append Tbl: Db.TableDefs.Refresh



Par contre avec cette fonction, si la liaison existe ou est corrompue, la l=
iaison est mise =E0 jour, mais si la liaison n'existe pas elle ne me cr=E9e=
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=E9e
If TblTables.Attributes And dbAttachedTable Then
'Red=E9fini la propri=E9t=E9 connect de la table avec la nouvel=
le base
TblTables.Connect =3D ";DATABASE=3D" & strChmFichier
'Remet =E0 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

1 réponse

Avatar
Gloops
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.

--