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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
--
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.
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.