IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Import de données


Sujet :

Access

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 137
    Points : 74
    Points
    74
    Par défaut Import de données
    Bonjour

    Je désire importer des données provenant de 3 fichiers Access et les regrouper dans une seule table. J'ai executer le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If IsTable("A") = True Then
                        Drop_Table ("A")
                        DoCmd.TransferDatabase acImport, "Microsoft Access", "C:\B1.mdb", actable,  "Import_A1", "A", False
                       DoCmd.TransferDatabase acImport, "Microsoft Access", "C:\B2.mdb", actable,  "Import_A2", "A", False
                       DoCmd.TransferDatabase acImport, "Microsoft Access", "C:\B3.mdb", actable,  "Import_A3", "A", False
    End If
    Mais au lieu de me faire le regroupement lors de l'import, Access me créé 3 table A différentes. Il doit y avoir un élément que j'ai omis ?

    Merci de me livrer ma faille. :-)
    Aurélien

  2. #2
    Membre régulier

    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Points : 81
    Points
    81
    Par défaut
    Ca me parait normal que Access te crée 3 tables différentes. Question de sécurité pour éviter d'écraser des données.
    Perso je penche pour un code supplémentaire pour ajouter les enregistrements des 2 autres tables dans la première.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 137
    Points : 74
    Points
    74
    Par défaut
    Perso je penche pour un code supplémentaire pour ajouter les enregistrements des 2 autres tables dans la première.
    J'importe déjà les données d'une table contenue dans une autre base. Si Acces me crée une table par import pour éviter d'écraser les données, pourquoi en réalisant cet import depuis une table de la même base, ne ferait-il pas la même chose ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    plutot de de faire un import declare des tables liées et lance une requête ajout

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 137
    Points : 74
    Points
    74
    Par défaut
    Le soucis avec cette méthode est que j'importe des données depuis des bases dont le nom change avec le temps mais dans laquelle la table porte toujours le même nom.
    En fait, c'est un regroupement de tables de commandes de produits. Donc ça change toujours .... je ne peux pas lier les tables dans ce cas ?

  6. #6
    Membre régulier

    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Points : 81
    Points
    81
    Par défaut
    Si il est possible de lier les tables par le code VBA.

    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
    Function fctLiaisonTable(strDBase As String, strTable As String)
    On Error GoTo errfctLiaisonTable
        Dim db As Database
        Dim tabdef As TableDef
     
        ' Ouvre la base de données courante.
        Set db = CurrentDb
     
        Set tabdef = db.CreateTableDef(strTable)
     
        tabdef.Connect = ";DATABASE=" & strDBase
        tabdef.SourceTableName = strTable
     
        db.TableDefs.Append tabdef
     
        tabdef.RefreshLink
     
        db.Close
        Set db = Nothing
        Set tabdef = Nothing
        Exit Function
     
    errfctLiaisonTable:
        Select Case Err.Number
        Case 3012
            Call MsgBox("La liaison de la table " & strTable & "  existe déjà." _
                        & vbCrLf & "Exécution terminée" _
                        , vbCritical, Application.name)
     
        Case 3011
            Call MsgBox("La table " & strTable & " n'existe pas dans la base de données demandée.", vbCritical, Application.name)
        Case Else
            MsgBox Err.Number & " : " & Err.Description
        End Select
     
    End Function
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call fctLiaisonTable ("c:\temp\mabase.mdb", "maTable")

    [Ajout]
    En faisant un scan d'un répertoire pour récupérer les noms des bases sans les savoir à l'avance !
    [/Ajout]

Discussions similaires

  1. Importer des données grace a des *.cvs dans MySQL
    Par Mic0001 dans le forum Installation
    Réponses: 3
    Dernier message: 05/01/2005, 19h26
  2. [CR]Importer des données d'une feuille excel
    Par rolan dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 17/12/2004, 22h32
  3. Réponses: 3
    Dernier message: 13/12/2004, 13h54
  4. Importer des données dans sql server avec DELPHI ???
    Par moutanakid dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/08/2004, 17h22
  5. Importation de données postgresql
    Par ythierrin dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 10/10/2003, 22h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo