Oui, mais seulement à condition que la bibliothèque DAO soit référencée. :aie:
Ou bien alors, dans Access seulement, tu utilises la propriété CurrentDB, voire DBEngine.
_
Version imprimable
Apparemment tu fais une confusion entre Access et Excel (ici c'est le forum Access ;)).
La propriété Application.References concerne seulement Access et non pas Excel. Donc tu ne peux pas utiliser cette propriété dans Excel.
Je suis curieux (et intéressé) de voir comment tu t'y prends pour << attacher dynamiquement (depuis delphi) ce module au modèle Word >>.
Peux-tu nous montrer un exemple de code (même du Pascal :)) ?
Dans tes messages, tantôt tu parles de DAO.Database (donc la bibliothèque DAO), tantôt tu parles de la référence ADO (donc la bibliothèque ADODB) ???
Mais dans le code que tu donnes, les types d'objets sont préfixés par DAO... donc c'est la bibliothèque DAO que tu veux référencer... OK ?!
Il est possible de travailler avec la bibliothèque DAO sans l'avoir référencée au préalable: c'est ce qu'on appelle une liaison tardive.
La technique de la liaison tardive a déjà été évoquée sur le forum Access, notamment pour piloter une application Excel par l'Automation.
Le principe de la liaison tardive est de ne pas typer les objets et de faire appel à la commande CreateObject ou de récupérer une référence sur un objet (par exemple Application.VBE).
Je vais te donner un exemple en adaptant ton code pour une liaison tardive à la bibliothèque DAO 3.6.
Remarque:
Pour ouvrir un objet Database, il faut d'abord un objet DBEngine.
Dans le cas d'une liaison tardive il faut créer cet objet DBEngine.
En revanche, si la bibliothèque est référencée, l'objet DBEngine est automatiquement créé.
Dernière remarque:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Dim myEngine as Object Dim mydb As Object Dim myRS As Object Set myEngine = CreateObject("DAO.DBEngine.36") Set mydb = myEngine.OpenDatabase(chemBase) mySQL = "SELECT * FROM TblStyles WHERE Id=" & myId Set myRS = mydb.OpenRecordset(mySQL) myRS.MoveFirst While Not myRS.EOF Coloriage_Style myRS("NomStyle"), Couleur, myRS("FondouPolice") myRS.MoveNext Wend myRS.Close Set myRS = Nothing mydb.Close Set mydb = Nothing Set myEngine = Nothing
Si tu veux ajouter une référence à ton application Excel, tu peux envisager d'utiliser la bibliotèque "Microsoft Visual Basic for Application Extensibility..." au moyen d'une liaison tardive...
ce qui devrait extirper la balle précédemment tirée dans le pied ! :mouarf: :mouarf: :mouarf:
_
Bonjour à tous,
Je me glisse dans la fin de cette discussion, pour savoir en quelle(s) version(s) fonctionne le code proposé (97,2000,2002,2007 ?)
Si c'est du 97, et que le but de la fonction
est de recréer tous les liens existants pour l'ensemble des tables attachés, j'ai eventuellement un code plus simple, avec boucle, ce qui évite de citer toutes les tablesCode:Public Sub mettreAJourLien(DernierLien, CheminCourant)
(je n'ai fait qu'adapter un code trouvé sur le net, mais c'est celui que j'utilise)
(mais peut être que ta méthode est plus rapide que la mienne ?)
voila ma modeste contribution.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 Function ModifAttache(strDBPath) ' Modification simple des attaches ' sur le modèle de fGetLinkPath de Dev Ashish ' 21/07/2005 Dim vieuxnom As String, stPath As String Dim loTd As TableDef Dim dbs As Database Dim I, nb As Integer I = 0 CurrentDb.TableDefs.Refresh ' nb de table nb = CurrentDb.TableDefs.Count For Each loTd In CurrentDb.TableDefs On Error Resume Next stPath = dbs.TableDefs(loTd.Name).Connect If stPath = Null Then Else I = I + 1 vieuxnom = fGetLinkPath(loTd.Name) loTd.Connect = ";Database=" & strDBPath loTd.RefreshLink Debug.Print loTd.Name; " "; fGetLinkPath(loTd.Name); " à la place de : "; vieuxnom End If Next loTd Set loTd = Nothing CurrentDb.TableDefs.Refresh MsgBox "Terminé." & vbCrLf & I & " tables attachées pointent désormais vers la base de données " & strDBPath, vbOKOnly, "Procédure terminée avec succés" End Function
fevec
Bonsoir,
Je voudrais utiliser le code de jpharand (Ajouter dynamiquement une référence), et pour bien le comprendre j'ai besoin de quelques explications.
Par interface au format mdb, et les données, au format mdbCitation:
Tout d'abord, sachez que mon applic se décompose en 4 fichiers :
- L'interface au format mdb,
- les données, au format mdb,
- une dll, au format... dll,
- et une autre sorte de dll, au format... mde.
Est-ce qu’il s’agit des bases dorsale et Frontale ?
Par contre une dll, au format... dll, et une autre sorte de dll, au format... mde. là je ne comprends pas et je ne sais pas comment faire.
Pouvez-vous me donner un exemple ?
Merci pour votre aide.
Salutations.