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

Langage SQL Discussion :

Suppression d'enregistrements dans une table


Sujet :

Langage SQL

  1. #1
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut Suppression d'enregistrements dans une table
    Bonjour,
    je débute en VBA Access et j'aurai besoin de votre aide.
    Je souhaiterai ici n'effacer que les enregistrements dont l'année est égale à l'année saisie par l'utilisateur.
    J'ai essayé plein de truc mais j'y arrive toujours pas.
    Voici le code :
    Sub Annuelle()

    'on veut créer une macro qui archive tous les ans les enregistrements

    Dim a%, année%

    'utilisateur entre l'année qu'il veut archiver

    a% = InputBox("De quelle année sont les données que vous souhaitez exporter ?", "Choix de l'année", "écrire ici")

    'on récupère année en cours : utilisateur ne peut pas archiver tant que année n'est pas finie

    année% = Year(Now)

    'on vérifie si année entrée est bien possible

    If ((a% < 1970) Or (a% > année%)) Then

    MsgBox ("Ce n'est pas possible !!!")

    ElseIf (a% = année%) Then

    MsgBox ("L'année " & année% & " n'est pas encore finie!!!")

    Else

    'on copie la table dans Access

    DoCmd.CopyObject "", "ARRET_Archive_" & a%, acTable, "ARRET2"

    'on veut supprimer les enregistrements de année a%

    DoCmd.RunSQL "DELETE FROM ARRET2 WHERE 'Année' = 'a%' ;"

    End If

    End Sub
    Si quelqu'un pouvait m'aider ca serait super...
    Merci beaucoup
    ~ Lola ~

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Ce qui appartient au Langage SQL dans ton code est cette seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "DELETE FROM ARRET2 WHERE 'Année' = 'a%'"
    Et ton problème vient de la construction de ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "DELETE FROM ARRET2 WHERE [Année] = '" + a% + "'"
    Je connais mal VBA, l'opérateur de concaténation n'est peut-être pas le +
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Alors déjà bienvenue sur ce forum

    Ensuite si tu nous donnais l'erreur que ça renvoie, parce qu'on est pas medium

    Deuxièmement, tu es précisément dans le forum SQL, pas VBA, on ne peut t'aider que pour le SQL (pas de mauvaise volonté, compétence plutôt...)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM ARRET2 WHERE Année = 1999
    est correct

    soit sure que ton code concatène bien la variable qui contient l'année au reste de la chaine de caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "DELETE FROM ARRET2 WHERE Année =" + annee + ";"

  4. #4
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut Problème SQL
    Merci de m'avoir répondu si vite
    En fait chaque fois le problème vient de là où est écrit le code SQL après VBA marche.

    Voici l'erreur:

    Erreur d'éxécution '3464'
    Type de données incompatibles dans l'expression du critère
    ~ Lola ~

  5. #5
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut Ca marche
    Voilà j'ai réussi en mélangeant un peu de tout
    merci de m'avoir aidée...
    ~ Lola ~

  6. #6
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut Le code
    Pour ceux que ça interesse voilà la ligne de code finale pour supprimer les enregistrements d'une année donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     db.Execute "DELETE FROM ARRET2 WHERE Année = " & a% & ";"
    Merci encore à ceux qui m'ont aidée...
    ~ Lola ~

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

Discussions similaires

  1. Suppression d'enregistrement dans une table
    Par pape bogus dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/08/2013, 09h04
  2. Suppression d'enregistrements dans une table
    Par parab dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 16/01/2010, 10h46
  3. suppression d'enregistrement dans une table
    Par benoist.cardinal dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 21/08/2008, 22h19
  4. Suppression d'enregistrement dans une table
    Par gunico dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 22/11/2007, 16h40
  5. Suppression enregistrement dans une table
    Par elkhy dans le forum Access
    Réponses: 3
    Dernier message: 25/04/2006, 14h29

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