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 :

Suppression RecordSet


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut Suppression RecordSet
    Bonjour,

    Je suis face à un problème qui va vous sembler sans aucun doute idiot mais que je n'arrive pas à résoudre.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        Set SupprLignes = CurrentDb.OpenRecordset(Table, [dbOpenTable])
     
        SupprLignes.MoveFirst
     
        While Not SupprLignes.EOF
                'SupprLignes.Delete
                If SupprLignes.Fields("Champ2").Value = Null Then SupprLignes.Delete
                SupprLignes.MoveNext
        Wend
     
        SupprLignes.Close                                   'Fermeture du recordset
        Set SupprLignes = Nothing
    Je cherche à supprimer les lignes où champ2 ne contient rien. Seulement quand je mets = Null (comme ici) ça ne me supprime rien et si je mets Is Null, ça me supprime toutes les lignes. Mais Je n'arrive pas à supprimer juste les lignes dont le champ2 est nul. Je pense que c'est un souci de syntaxe

    Merci par avance de votre aide

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    En passant par une requête suppression, c'est plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "DELETE Champ FROM Table WHERE (((Champ) Is Null));"

  3. #3
    seb92400
    Invité(e)
    Par défaut
    Hello...

    Et si tu remplaces = Null par = ""

    Ou bien tu peux également écrire les deux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If SupprLignes.Fields("Champ2").Value = Null OR SupprLignes.Fields("Champ2").Value = ""
    Par contre, pour IsNull, je ne vois pas pourquoi il te supprime toutes les lignes... Je vais réfléchir...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Kikof : En fait je souhaiterai supprimer l'enregistrement entier où le Champ2 est nul, pas juste le champ

    noawsen : Je ne comprends pas, ça ne marche pas non plus avec "" :/

  5. #5
    seb92400
    Invité(e)
    Par défaut
    Je ne sais pas encore tout sur les recordset, mais ne faut-il pas utiliser l'instruction Update afin de mettre à jour l'enregistrement ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Déja essayé de cette façon avant de poster :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Set SupprLignes = CurrentDb.OpenRecordset(Table, [dbOpenTable])
     
        SupprLignes.MoveFirst
     
        While Not SupprLignes.EOF
                'SupprLignes.Delete
                If SupprLignes.Fields("Champ2").Value = Null Or SupprLignes.Fields("Champ2").Value = "" Then SupprLignes.Delete
                SupprLignes.Update
                SupprLignes.MoveNext
        Wend
     
        SupprLignes.Close                                   'Fermeture du recordset
        Set SupprLignes = Nothing
    Mais toujours le même souci

  7. #7
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Citation Envoyé par Tsuna78
    Kikof : En fait je souhaiterai supprimer l'enregistrement entier où le Champ2 est nul, pas juste le champ
    Euh... une requête suppression ne supprime pas un champ mais un enregistrement. As tu essayé avant de dire ça ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Kikof : Très honnetement non, je n'ai pas essayé, j'étais persuadé que le DELETE supprimait juste un champ vu la syntaxe DELETE champ FROM Table WHERE champ is Null

    Je viens d'essayer, ça ne supprime rien par contre :/

    Y a t'il normalement juste besoin de cette ligne dans le code VB pour supprimer ces lignes ??

  9. #9
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    En fait, la syntaxe ici dit "Supprime les enregistrements de la table Table pour lesquels le champ Champ est nul"

    j'ai essayé avant de te proposer la solution. Donc ça fonctionne.

    Fais une copie de ta table sur laquelle tu veux supprimer tes données, crées ta requête en mode création. Et fait un essai sur cette table pour voir ce que ça dit.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Je viens d'y arriver par les RecordSet.

    Toutefois, ta méthode m'intéresse Kikof car ça me semble effectivement bien plus propre.

    Dans ma table, Champ2 est un nom de champ. Je souhaite supprimer la ligne entière (la table comprend 40 champs)

    Le souci que j'ai est le suivant : Quand je suis en mode création SQL, si je fais un : DELETE Champ2 FROM nomTable WHERE Champ2 Is Null, il ne met aucun enregistrement à jour. De même si je le fais en graphique, la requête suivante est générée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE [nomTable].Champ2
    FROM [nomTable]
    WHERE (("Champ2" Is Null));
    Dans ce cas là aussi, il me dit qu'aucun enregistrement ne va être modifié si je l'exécute.

  11. #11
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Champ2 est de quel type ??

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Champ2 est de type numérique

  13. #13
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    sinon il y a un autre moyen de répérer les Null

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE * FROM [nomTable]
    WHERE [nomTable]!Champ2 & "" = "";

  14. #14
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    Kikof t'a montré la syntaxe,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE Champ FROM Table WHERE Champ Is Null
    Tu n’as pas une erreur de syntaxe par hasard ?

    A+

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Peut être le souci vient-il du nom de ma table car je ne vois pas la différence entre ce que je fais et ce que vous me dites. Je m'explique :

    Je viens de mettre la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunSQL ("DELETE * FROM [Téléphonie_" & Date_traitée & "] WHERE ([Téléphonie_" & Date_traitée & "]!Champ2 & "" = "";")
    Et il n'y a pas de suppression non plus des lignes vides. Peut être ai-je une erreur de syntaxe au niveau du nom de la table ??

  16. #16
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    La syntaxe pour un delete est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "DELETE FROM [Téléphonie_" & Date_traitée & "] WHERE ([Téléphonie_" & Date_traitée & "]!Champ2 & "" = "";")

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 26
    Points
    26
    Par défaut
    Ca roule, merci

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

Discussions similaires

  1. Suppression enregistrement dans Recordset
    Par Jordmund dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/01/2008, 04h39
  2. [A2003][TABLE] - Suppression d'un RecordSet
    Par DeFCrew dans le forum Access
    Réponses: 2
    Dernier message: 25/09/2006, 13h54
  3. Problème de taille après suppression de lignes dans un recordset...
    Par nikko_54 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/04/2006, 22h18
  4. Suppression enregistrement via recordset
    Par CCRNP dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/03/2006, 09h41
  5. [VB6]ADO Suppression dans un RecordSet
    Par teurnal dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/02/2006, 18h52

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