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 :

Problème d'insertion d'une table dans une autre


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 75
    Points : 54
    Points
    54
    Par défaut Problème d'insertion d'une table dans une autre
    Bonjour,

    j'ai une table A que j'aimerai insérer dans ma table B.
    Je le fais par du code VBA.
    Le problème c'est que les champs de ma table A ne correspondent pas toujours à ceux de la table B.
    Dans ce cas là, j'aimerai que l'insert ne se réalise pas.
    Quand on fait l insert, Access demande la valeur des champs qu'il ne connait pas en ouvrant une txtbox.
    C'est très ennuyeux.
    Je pourrais effectivement regarder 1 à 1 les différentes colonnes de ma table B et voir si il y ades correspondances avec celles de ma table A, et si pas de correspondance, alors on arrête tout.
    Je pense qu'il doit y avoir une solution légèrement moins complexe à mettre en oeuvre, quelqu'un a-t-il une idée?

    Merci, A+

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    INSERT ou UPDATE ?

    Si les données existent déjà dans Table B alors c'est un update...

    Mais j'ai pas vraiment compris la question

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Il s agit bien d'un INSERT
    Bon je vais essayer d'etre plus clair.

    Cas numéro 1:

    Table A : Champ1, Champ2, Champ3
    Table B : Champ1, Champ2

    Dans ce cas là, mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     INSERT INTO TableB (Champ1, Champ2) select Champ1, Champ2 from TableA
    marche bien



    Cas numéro 2:

    Table A : Champ1, Champ9, Champ10
    Table B: Champ1, Champ2

    Dans ce cas, c'est foireux.
    Pourquoi?
    Comme le Champ2 n'est pas connu dans la TableA, Access m'ouvre une textebox me demandant de saisir la valeur de l expression Champ2.

    J'aimerai en fin de compte vérifier que l'INSERT est possible, c'est à dire que mon SELECT trouve tous les champs demandés dans la Table A.

    A+

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Tente l'insert et gère l'erreur si ce n'est pas possible

    En VBA :

    On error goto err
    CurrentDb.Execute("INSERT INTO TableB (Champ1, Champ2) select Champ1, Champ2 from TableA ")
    msgbox "Insert OK"

    Fin:
    Exit Sub

    Err:
    Msgbox "Insert pas possible"
    Resume Fin

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Je n'y pensais plus au CurrentDb.Execute !

    Effectivement, c'est cela qu'il faut faire.

    Merci
    A+

  6. #6
    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
    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
     
    Function ajoute(source As String, cible As String)
    Dim mabase As DAO.Database
    Dim u As DAO.Field
    Dim sql As String
    Dim champs As String
    Set mabase = CurrentDb()
     
    champs = ""
    For Each u In mabase.TableDefs(source).Fields
    On Error GoTo fin
    mabase.TableDefs(cible).Fields(u.Name).OrdinalPosition = mabase.TableDefs(cible).Fields(u.Name).OrdinalPosition
    champs = champs & u.Name & ", "
    fin:
    On Error GoTo 0
    Next u
    champs = Left(champs, Len(champs) - 2)
    If champs <> "" Then
    sql = "insert into " & cible & " (" & champs & " )  select " & champs & " from " & source & ";"
    DoCmd.RunSQL sql
     
    End If
    End Function
    Elle est pas belle la vie ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. Réponses: 5
    Dernier message: 27/07/2007, 16h21
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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