Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 18/11/2010, 15h16   #1
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 37
Points : 11
Points : 11
Par défaut Sélectionner un ficher mdb et importer les données

Bonjour,

Je souhaite développer une application Access qui permet de :
1. sélectionner un fichier "source" mdb (ou mde) dans un répertoire (via un composant genre "explorer" qui permet de choisir le répertoire et même le disque)
2. copier les données de "source" vers la base "destination" çàd : table par table, "copier" les lignes de la table source et les "coller" (ajouter) dans la table destination
sachant que l'on connait la structure des tables a priori (nom des tables, nom et type des colonnes).

A mon avis, la difficulté c'est de lier dynamiquement les tables source dans la base destination. Cela vient du fait que l'on sélectionne le fichier mdb à importer et donc on ne sait pas créer une fois pour toutes des tables liées dans la base destination. Il faut aussi gérer le cas où une table serait manquante dans la source.
Mais une fois ce problème résolu, les requêtes SQL (insert into ...) ne sont pas compliquées puisque les noms des tables et de leurs colonnes est connu.
Il reste aussi à trouver le bon objet (graphique) qui permette de sélectionner le fichier source.

Merci d'avance pour vos conseils, avis, exemples de code , ...
voxov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 15h30   #2
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Je pense qu'il y a une bonne partie des réponses à tes questions dans la
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 17h45   #3
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 37
Points : 11
Points : 11
Pas évident.
Avec quels mots clé, la recherche dans les FAQ ?
voxov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 18h01   #4
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonsoir,
avec un exemple
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
48
49
50
 
 
sub test
 call LiaisonBase(SelectionFichier())
End Sub
 
Function SelectionFichier() As String
    Dim fd As FileDialog, v As Variant
    Set fd = application.FileDialog(msoFileDialogFilePicker)
    With fd
        .InitialFileName = application.currentProject.path
        .Filters.Clear
        .Title = titre
        .AllowMultiSelect = False
        .Filters.Add "Fichier mdb", "*.mdb"
        .InitialView = msoFileDialogViewDetails
        If .Show Then
            For Each v In .SelectedItems
                SelectionFichier = v
            Next v
        End If
    End With
End Function
 
 
Sub LiaisonBase(ByVal base As String)
    On Error GoTo erreur
    Dim db As DAO.Database, t1 As TableDef, t2 As TableDef
 
    Set db = OpenDatabase(base)
    For Each t1 In db.TableDefs
 
        If Left$(t1.Name, 4) <> "MSys" Then
            SysCmd acSysCmdSetStatus, "Liaison de la table " & t1.Name
            Set t2 = CurrentDb.CreateTableDef("ext" & t1.Name)
            t2.Connect = ";Database=" & base
            t2.SourceTableName = t1.Name
            CurrentDb.TableDefs.Append t2
        End If
    Next t1
 
    SysCmd acSysCmdClearStatus
    Exit Sub
erreur:
    If err = 3012 Then
        DoCmd.DeleteObject acTable, t1.Name
        Resume
    End If
    application.RefreshDatabaseWindow
End Sub
helas est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 09h45   #5
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 37
Points : 11
Points : 11
Merci.
C'est exactement cela.
voxov 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 08h31.


 
 
 
 
Partenaires

Hébergement Web