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

VBA Access Discussion :

[VBA-A] INSERT INTO en vérifiant les données avant !!


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 33
    Par défaut [VBA-A] INSERT INTO en vérifiant les données avant !!
    Bonjour, j'ai eut à créer une nouvelle table dans une base de données access qui est presque identique à une autre table existante mais avec quelque champs en plus et d'autre qui ont été enlevé.

    Exemple

    Table1 et TableNouvelle

    J'ai créer par la suite une nouvelle requête qui copie les données dans la Table1 vers la TableNouvelle.

    Mais je dois transférer seulement les lignes qui n'existe pas dans la TableNouvelle donc avant de faire le transfert je dois vérifier si le champs de ma clé primaire existe dans ma TableNouvelle.

    Comment je fais ça !!

    Merci

    Rumeurs

  2. #2
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 33
    Par défaut
    Je sais que ça ne sera pas possible de le faire directement dans la requete alors je crois que la solution c'est de le codé en vba donc je dois parcourire la table source ligne par ligne pour vérifier son existance dans la table destination et si elle n'existe pas je fait un INREST TO mais je fais comment pour coder ça en VBA ??

    Bref comment on fais pour parcourir une table en VBA ??

    Merci !!

  3. #3
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Bonsoir et bienvenue sur le Forum VB,


    Bref comment on fais pour parcourir une table en VBA ??
    Exactement comme à l'aide de tout autre langage de développement...
    On ne peut la parcourir qu'après l'avoir ouverte...
    Une fois ouverte, on peut y faire une sélection et modifier, au besoin, les articles sélectionnés (mise à jour), supprimer des articles ou encore en ajouter...
    Il faut donc commencer par apprendre à ouvrir la base et la table en cause.
    Il y a à cet effet des cours (rubriques cours) et la FAQ et ses exemples sur ce forum. Leur lecture ne prétend pas remplacer celle de l'aide en ligne (à consulter donc également), mais la compléter avantageusement.
    Commences par là puis reviens vers nous, avec un bout de code, si tu rencontres une difficulté de mise en oeuvre. Nous t'aiderons alors bien volontiers...

  4. #4
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 33
    Par défaut
    Allo jmfmarques, je m'attendais à ce genre de réponse et elle est légitime car je sais qu'il faut faire des recherches avant de poster une question

    Mais c'est un cours mandat que j'ai à faire et je ne connais pas beaucoup VBA Access alors j'ai pris la chance de poser la question !!

    Bref j'ai trouver ce code dans les recherche que j'ai modifier un peux. Le MsgBox n'a pas vraiemnt rapport mais je voulais juste savoir s'il entrait dans la boucle !! :

    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
     
        Dim rst As Recordset
        Dim tpm As Recordset
        Dim bds As Database
        Dim fld As Field
     
        Set bds = CurrentDb
        Set rst = bds.OpenRecordset("TABLE1", dbOpenTable)
        Set tpm = bds.OpenRecordset("TABLE2", dbOpenTable)
     
        For i = 0 To rst.Fields.Count - 1
            If rst!I_TRCE_NO = "102101" Then
                MsgBox "YÉ !!"
            End If
        Next
    Mais ça ne fonctionne pas car si je comprend bien, je dois d'abbord me connecter à la base données !! Mais en codant directement dans la base de données Access (VBA) il faut quand même se conecter à cette même base ???

    Alors quel est le code exact pour me connecter, rechercher un enregistrement et faire le INSET INTO dans l'autre table ??

    Encore désolé jmfmarques d'avoir poster une question sans trop chercher avant mais ça urge de mon côté et j'ai pensé que c'était la façon la plus rapide d'avoir une réponse !!

    Merci

    Rumeurs

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Cher rumeurs,

    Le bout de code que tu présentes là montre de façon évidente qu'à défaut d'écrire à ta place tout ce dont tu as besoin, tu n'avanceras pas :
    Je te propose donc de dépenser le temps nécessaire à l'étude, inévitable à mon sens, du minimum indispensable pour commencer à comprendre les diverses méthodes de fonctionnement en ce qui concerne les lectures/ecritures de bases de données :
    http://jacma.developpez.com/premierspasdatabase/
    J'entends bien que ton "mandat" est court, mais c'est le tien, me semble-t-il, et c'est bien toi qui l'as accepté...

  6. #6
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 33
    Par défaut
    Citation Envoyé par jmfmarques
    ...J'entends bien que ton "mandat" est court, mais c'est le tien, me semble-t-il, et c'est bien toi qui l'as accepté...
    J'ai commencé mon emploi depuis quelques semaines et il ne me donne pas le choix d'accepter ou de refuser un mandat je dois faire ce qu'il me demande et c'est tout !!!

    J'ai passé quelques années sans faire deprogrammation et du VBA en Access j'en ai jamais fait alors je pensais trouver quelqu'un ici pour me donner un coup de main à starter mon mandat de la bonne manière.

    J'ai fais beaucoup de VB 6 il y a de ça 5 ou 6 ans mais je voudrais juste savoir si on ce branche à une base de données Access en VBA Access de la même manière que l'on se branche en VB6. Car je trouve ça bizzard d'avoir à se brancher à une base de données quand on est dans la base de données !!!

    Je vais continuer à fouiller mais si tu pourais me répondre pour cette question de connexion en VBA ça serais bien apprécié, sinon merci pareil de m'avoir répondu.

    Bonne fin de journée !!

    Bye

    Rumeurs

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Ton accès à la base où tu te trouves se fait par CurrentDb.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Citation Envoyé par Rumeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Set bds = CurrentDb
        Set rst = bds.OpenRecordset("TABLE1", dbOpenTable)
    Je ne vois pas ce qui peut ne pas marcher

  9. #9
    Invité
    Invité(e)
    Par défaut
    Salut,

    Une autre solution serait d'indexé les champs de ta table, regarde l'aideAccess pour cela, en n'acceptant pas les doublons sur certains champs capitales, ce qui aurait pour conséquence que lorsque tu fais un insert to, les enregistrements dont les valeurs des champs indéxés sont égales ne seront pas rajouter à ta table.

    Starec

  10. #10
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 33
    Par défaut
    Merci les boys pour votre aide, ça fonctionne et j'ai terminé mon mandat attend !!

    Bonne journée !!

    Rumeurs

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

Discussions similaires

  1. ADO - VBA - Requête INSERT INTO
    Par ceres02 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/10/2008, 21h54
  2. SQL Insert into et Regroupement de données
    Par Xorbane dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/04/2008, 21h47
  3. Réponses: 2
    Dernier message: 08/09/2006, 21h32
  4. Compresser les données avant insertion ?
    Par GregPeck dans le forum Outils
    Réponses: 2
    Dernier message: 07/08/2006, 16h09
  5. [VBA-A] INSERT INTO + PBL DE DOUBLONS
    Par forsay1 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/04/2006, 11h45

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