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 :

Insert into sans doublon [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Apprenti Analyste/gestionnaire de données
    Inscrit en
    Novembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Apprenti Analyste/gestionnaire de données

    Informations forums :
    Inscription : Novembre 2011
    Messages : 4
    Par défaut Insert into sans doublon
    Bonjour à tous,

    Tout d'abord, je tiens à exprimer ma sincère gratitude aux personnes qui gèrent et alimentent ce forum. Il m'est arrivé plusieurs fois de consulter des aides, mais aujourd'hui, je viens à poster car je ne trouve nulle part une solution claire à mon problème...

    Contexte : Je travaille sous Excel et Access en VBA.
    L'opération que j'essaie d'effectuer, est de lire un fichier texte, puis d'insérer les données recueillies dans une Bdd Access.
    J'ai réussi à effectuer cela, mais je ne parviens pas à éviter les doublons lors de mon Insert Into.

    Je vous insère une partie du code (Je vous passe les déclarations de variables et les informations de connexion...)

    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
     
        nomFichier = Application.GetOpenFilename
        f = FreeFile()
        Open nomFichier For Input As #f
        Do While Not EOF(f)
            Input #f, ligne
                Dim listeChamp() As String
                listeChamp = Split(ligne, ";")
                    nom = listeChamp(0)
                    genre = listeChamp(1)
                    dateSortie = CDate(listeChamp(2))
     
                sql = "INSERT INTO Film (titre, genre, dateSortie)" & _
                        "VALUES('" & nom & "','" & _
                                 genre & "','" & _
                                 dateSortie & "')"
    En gros, ce que je souhaiterais faire dans l'idéal est une sorte de "Si ce que j'essaie d'ajouter est déjà présent dans la bdd, je ne l'ajoute pas."
    Je ne parviens pas à résoudre ce problème du fait que j'utilise des variables, et du fait que je ne peux pas me servir de clef primaire (Elle est en numéroAutomatique, je ne la renseigne pas lors de l'insert into)..
    C'est vrai que c'est un peu compliqué sous Access...

    Merci d'avance pour tous les conseils que vous saurez me donner...

    PS: J'espère que j'ai choisi le bon topic ^^'

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Bonsoir,

    Le plus simple est de déclarer le titre comme clé unique (sans doublon) ainsi l'insert lèvera une erreur qu'on peut ignorer.

    Sinon il est aussi possible de faire un select sur le titre avant l'insert, ce qui permet de chercher s'il existe un titre "similaire"

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Apprenti Analyste/gestionnaire de données
    Inscrit en
    Novembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Apprenti Analyste/gestionnaire de données

    Informations forums :
    Inscription : Novembre 2011
    Messages : 4
    Par défaut
    Désolé d'abusé de ton temps, mais comment t'y prendrais-tu pour placer un Select devant l'insert?

    Edit: d'accord, je viens de tilter ce que tu disais, faire un sélect avant l'insertion qui sert juste à vérifier que le titre n'est pas déjà dans la base... 2 requêtes pour une insertion. J'y avais pense mais je voulais savoir s'il existait un autre moyen que de faire 2 requêtes.
    Je cherchais en gros un genre de Replace Into...
    Mais on n'a pas ça sous access.

    Merci en tout cas,

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

Discussions similaires

  1. [MySQL] insert into sans effet
    Par onda47 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/02/2013, 02h26
  2. [AC-2003] INSERT INTO sans doubles
    Par fanchon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/04/2011, 12h29
  3. Réponses: 1
    Dernier message: 18/05/2006, 17h57
  4. [VBA-A] INSERT INTO + PBL DE DOUBLONS
    Par forsay1 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/04/2006, 11h45
  5. [Postgresql] insertion sans doublon
    Par Pwill dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 08/06/2005, 11h37

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