Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Contribuez
Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/03/2006, 16h20   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 61
Points : 10
Points : 10
Par défaut lier des tables par le code

bonjour,

je fais appel à vous pour lier toutes les tables d'un BD access par le code. Ma base access est protégées par un pwd.

j'ai cherché sur le forum mais je n'ai pas trouvé qq chose de clair.


du genre une boite de dialogue qui permet de selectionner un fichier .mbd et et de lier ses tables.

avez vous une idée svp ?
karimspace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 16h30   #2
Membre régulier
 
Avatar de Sonic
 
Inscription : mars 2002
Messages : 105
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 105
Points : 77
Points : 77
Envoyer un message via ICQ à Sonic Envoyer un message via MSN à Sonic
Pour récupérer la base de données, je te laisse regarder la FAQ : http://access.developpez.com/faq/?pa...#AffBoitDialog
Et pour lier une table :
Code :
DoCmd.TransferDatabase acLink, "Microsoft Access", "C:\test.mdb",acTable, "NomTableSource","NomTableDest"
Sonic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 16h42   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 61
Points : 10
Points : 10
merci infiniment
karimspace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 09h46   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 61
Points : 10
Points : 10
bonjour,

j'ai encore un petit problème :

comme je le disais, ma base de données est prtégée par un mot de passe. Comment puis-je faire pour passer le mot de passe en paramètre ?

sinon pour chaque table il y'a une popup qui me demande de saisir le mot de passe, et si j'ai 30 tables il fo taper 30 fois le mot de passe.

merci beaucoup de votre aide.
karimspace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 10h36   #5
Rédacteur

 
Avatar de Tofalu
 
Christophe Warin
Inscription : octobre 2004
Messages : 8 635
Détails du profil
Informations personnelles :
Nom : Christophe Warin
Âge : 28

Informations forums :
Inscription : octobre 2004
Messages : 8 635
Points : 13 718
Points : 13 718
Quelques exemples en utilisant VBA :

Lier une table :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
Sub lier()
Dim strMotPasse As String
Dim strCheminBd As String
Dim strNomTable As String
Dim strConnect As String
Dim oDb As DAO.Database
Dim oTbl As DAO.TableDef
'Définit mot passe, nom table, chemin base de données
strMotPasse = "pass"
strCheminBd = "c:\test.mdb"
strNomTable = "Table1"
'Instancie l'objet Database
Set oDb = CurrentDb
'Définit la chaine de connexion permettant la liaison
strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:\test.mdb"
'Crée la nouvelle table
Set oTbl = oDb.CreateTableDef(strNomTable)
With oTbl
    .Connect = strConnect
    .SourceTableName = strNomTable
End With
'Ajoute la table à la base de données
oDb.TableDefs.Append oTbl: oDb.TableDefs.Refresh
End Sub
Lier toutes les tables d'une base de données

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
Sub lierToutes()
Dim strMotPasse As String
Dim strCheminBd As String
Dim strConnect As String
Dim strNomsTables() As String
Dim strTemp As String
Dim i As Integer
Dim oDb As DAO.Database
Dim oDbSource As DAO.Database
Dim oTbl As DAO.TableDef
Dim oTblSource As DAO.TableDef
'Définit mot passe, nom table, chemin base de données
strMotPasse = "pass"
strCheminBd = "c:\test.mdb"
'Définit la chaine de connexion permettant la liaison des tables
strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:\test.mdb"
'Instancie l'objet Database de la base courante
Set oDb = CurrentDb
'Instancie l'objet Database de la base protégée
Set oDbSource = DBEngine.OpenDatabase(strCheminBd, True, True, strConnect)
 
'Parcours l'ensemble des tables de la base de données protégée
'et stocke leur nom
For Each oTblSource In oDbSource.TableDefs
    'ignore les tables system
    If (oTblSource.Attributes And dbSystemObject) = 0 Then
        strTemp = strTemp & oTblSource.Name & "|"
    End If
Next
'Ferme la base de données sources (impératif pour la liaison)
oDbSource.Close: Set oDbSource = Nothing
'parcours le tableau de noms de tables
strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|")
For i = 0 To UBound(strNomsTables)
  'Crée une nouvelle table dans la base de données courante
  Set oTbl = oDb.CreateTableDef(strNomsTables(i))
  'Lie les deux tables
  oTbl.Connect = strConnect
  oTbl.SourceTableName = strNomsTables(i)
  'Ajoute la table à la base de données
  oDb.TableDefs.Append oTbl
Next i
 
'Rafraichit la liste des tables
oDb.TableDefs.Refresh
End Sub
Pour que cela fonctionne, il ne faut pas oublier d'ajouter la référence Microsoft DAO au projet
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 11h28   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2002
Messages : 61
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 61
Points : 10
Points : 10
ça marche, merci beaucoup !
karimspace est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h27.


 
 
 
 
Partenaires

Hébergement Web