Bonjour,
Je cherche à mettre dans une base de données (C) les tables avec les champs "fusionnés" de deux autres (A et B), sachant que A et B ont des tables avec les mêmes noms, mais avec des champs qui ne sont pas nécessairement identiques (en général dans la B, il y a des champs en plus).
Ce que je veux, c'est que dans la base C, les tables aient les mêmes noms de tables, mais là, avec une structure de tables en "fusion", c'est-à-dire des tables comportant tous les champs de celles de A et de B. Autre chose, en général, les bases ont les mêmes clés (en fait, il s'agit de versions différentes de la même base). Et pour le moment, les enregistrements ne sont pas importants, c'est la structure qui compte. Donc, pour résumer, je veux que la structure d'une table dans C soit égale à celle en union des tables de même nom de A et de B.
Bref, j'ai commencé avec un code (je me suis basé sur un post d'un autre site, mais je plante au niveau de l'instruction sql. Là, quelque chose manque c'est sûr, mais je ne sais pas quoi faire.
Et si vous avez une meilleure idée pour régler ce problème (du moment que j'aurais encore à régler la question des relations par la suite), je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Create_NB() Dim db1 As DAO.Database Dim db2 As DAO.Database Dim baz1 As String Dim Tb As TableDef Dim Tb2 As TableDef Dim baz2 As String Dim codsql As String baz1 = InputBox("Entrer nom base 2012 (chemin complet) :") baz2 = InputBox("Entrer nom base 2015 (chemin complet) :") Set db1 = OpenDatabase(baz1) Set db2 = OpenDatabase(baz2) DoCmd.SetWarnings False For Each Tb In db1.TableDefs For Each Tb2 In db2.TableDefs If Tb.Name = Tb2.Name Then codsql = "create table " & Tb.Name & " as select * FROM " & Tb.Name & " LEFT JOIN " & Tb2.Name & " ON " & ................?????:aie: DoCmd.RunSQL codsql End If Next Next Set rst = Nothing Set Tb = Nothing Set Tb2 = Nothing Set db1 = Nothing Set db2 = Nothing DoCmd.SetWarnings True End Sub
Merci de votre aide..
Ore





Répondre avec citation



. J'avais espéré quelque chose de plus simple, et il me semblait que sql était accessible..
, je vais essayer cette piste aussi.
Partager