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

IHM Discussion :

Suppression des éléments d'une zone de liste


Sujet :

IHM

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut Suppression des éléments d'une zone de liste
    Bonjour à tous.

    Est-ce quelqu'un sait comment effacer des enregistrements d'une table lors que j'en choix dans une zone de liste?

    par exemple:

    J'ai une table avec quelques enregistrements.
    Je mets tous dans une zone de liste.

    Après je sélectionne quelqu'uns (ces que je voudrais effacer)
    je voudrais effacer de ma table les enregistrements que je selectionner dans ma liste, lors que je touche un button sur mon formulaire.

    Merci d'avance pour l'aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Veux-tu effacer définitivement ces éléments ou temporairement ?

    Si tu veux une suppression définitive, tu peux faire une requête de type suppression (delete), avec un clause Where qui reprend les éléments sélectionnés (tu trouveras des informations sur la Access.

    Si c'est provisoirement, il faut un champ de type Oui/Non, et une mise à jour de ces champs, il faut bien sûr que la requête qui alimente la liste comporte un test sur ce champ.

    Philippe

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Merci Philippe .

    Mais mon probleme c'est exactement ça: comment mettre tous les itens selectionés dans la clause Where?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Je pense avoir resolu le probleme, mais il reste un soucis:

    le code suivant marche bien, sauf pour la date dans la clause Where.
    ça veux dire, si j'enleve la condition de la date, tout se passe bien...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For i = 0 To LISTE_M.ListCount - 1
            If LISTE_M.Selected(i) = True Then
                Set oDb = CurrentDb
                Set oRst = oDb.OpenRecordset("SELECT * FROM [T_murcef] WHERE [COMPTE] = '" & Forms!F_murcef!LISTE_M.ItemData(i) & "' And [DATA] = #" & Date & "#")
                oRst.MoveFirst
                oRst.Delete
                oRst.Close
                oDb.Close
                Set oRst = Nothing
                Set oDb = Nothing
            End If
            Next i
        LISTE_M.Requery
    Je n'arrive pas a trouver le probleme.
    Merci pour l'aide.

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Tu n'es pas très prolixe sur "ce qui ne marche pas avec les dates"...

    Toutefois, généralement, j'essaie de ne pas utiliser les dates dans une clause where comme tu le fais, car selon les formats de date, tu peux avoir une intérprétation erronée (08/10/08 <> 10/08/08).

    Les dates étant des nombres, je préfère passer les dates en tant que nombres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "... where DATA = " & date * 1

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Merci pour la reponse, mais il serait vraiment très difficile de changer de format des dates maintenant.

    Par contre, je suis sure qu'elles sont bien tapés, car lors de l'enregistrement dans la table, j'utilise le fonction Date (le format de la table est Date, Abregé)

    Vous pensez que la clause ci-dessus est bien écrit?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Est-ce que la date est bien au format US (mm/dd/yyyy) ?

    Sinon, utilises la fonction Format (voir la FAQ).

    Philippe

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Bonjour,

    La date est au format dd/mm/yyyy, mais j'ai fait une teste avec une msgbox et les deux apparaissent egales.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox(oRst![DATA] & " " & Date)
    Merci

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Je n'ai pas parlé de changement de format de date...

    J'ai dit que les dates étant des nombres, il était préférable de les passer en tant que nombre dans la clause WHERE plutôt que comme des dates...

    Mais comme tu ne dis toujours pas ce qui ne va pas avec la clause WHERE et qui va bien sans la clause WHERE, à moins d'être extra-lucide (ce qui va devenir une qualité indispensable sur le forum...), il n'y a pas moyen de t'aider.

    Attention que la fonction Format préconisée par Philippe renvoie du texte... Si le champ est au format date, cela ne va pas simplifier le problème

    As-tu au moins essayé ma solution?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Je viens d'essayer mais il n'a pas marché. En effect, le code n'a pas completé.

    Par contre, j'amerais bien le faire avec des dates au format de Date

    Vous arrivez a voir le probleme?

    Merci encore une fois pour l'aide...
    J'espere que tout ça marche bien

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Peux-tu:
    - donner le code que tu as essayé
    - préciser en quoi il n'a pas fonctionné

    Précision: Il serait intéressant de construire la chaine sql au sein d'une variable de type String. Cela permettrait de débuguer plus facilement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim SQL as string
    SQL = "SELECT * FROM [T_murcef] WHERE [COMPTE] = '" & Forms!F_murcef!LISTE_M.ItemData(i) & "' And [DATA] = " & Date
    debug.print sql
    ...
    en mettant un point d'arrêt sur la ligne qui suit debug.print
    Ainsi, tu peux voir exactement la valeur de la chaine que tu passes

    Peux-tu faire ce que je te demande? Cela permettra sûrement d'avancer.

    Autre précision: Bien vérifier que le champ DATA est au format DATE, parce que je commence à avoir des doutes...

    Point théorique:
    On ne passe pas une date au format de date dans une clause WHERE. On passe une date, point. Quel est l'intérêt de vouloir passer une date à un format particulier sur un champ de type DATE. Le format ne sert que pour l'affichage, il n'affecte en rien la valeur de la variable passée. Donc, on s'en f* un peu du format de la date au moment où on la passe à la clause WHERE...

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    J'ai essayé le point d'arret, mais il ne marche pas...
    Voilà mon code ( J'essaye avec DAO maintenant...)

    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
    Dim oDbs As DAO.Database
    Dim oRsts As DAO.Recordset
    Set oDbs = CurrentDb
    SQL = "SELECT * FROM [T_murcef] WHERE [DATA] = #" & Date & "#"
    Debug.Print SQL
     
    Set oRsts = oDbs.OpenRecordset(SQL)
    MsgBox ("SELECT * FROM [T_murcef] WHERE [DATA] = #" & Date & "#")
    If Not oRsts.EOF Then
         oRsts.MoveLast
    End If
    MsgBox ("RecordCount:" & oRsts.RecordCount)
    If oRsts.RecordCount > 0 Then
         o = MsgBox("Merci de verifier la qualité du papier avant de commencer l'impression", vbOKCancel)
         If o = vbOK Then
         	DoCmd.OpenReport "L_murcef"
         End If
         oRsts.Close
         oDbs.Close
         Set oRsts = Nothing
         Set oDbs = Nothing
    end if
    Fichiers attachés Fichiers attachés

  13. #13
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    tu as mis une ligne avec Debug.print... Donc, tu dois avoir, en bas de ton écran, une zone (la fenêtre d'exécution).

    Peux-tu recopier ce qu'il y a dedans (il doit y avoir un truc du genre select .... Donne cette ligne svp.

    C'est au moins la quatrième fois que je demande:
    Qu'est-ce qui ne marche pas dans ta requête?. Autrement dit, à quoi vois-tu que cela ne marche pas? Tu as un message d'erreur, il n'y a pas de lignes renvoyées,....

    Essaie de comprendre que l'on n'est pas derrière ton pc, donc, tu es nos yeux...

    Je voudrais bien que tu réessaies le code que j'avais donné plus haut (celui avec "...DATA = " & date *1 avec la chaine SQL, que tu donnes la copie de ce que la chaine a renvoyé avec debug.print et que tu dises en quoi cela n'a pas fonctionné. Est-ce si difficile de faire cela?

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Juste pour tester, essayes de remplacer Date par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format(Date,"mm/dd/yyyy")
    C'est juste un test.

    Philippe

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Désolé, je n'avais pas compris quoi vous vouliez dire: Mon Recordcount reste à 0, il ne trouve aucunne enregistrement avec la date d'aujourd'hui. (Il y en a 2).

    La fenetre d'execution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM [T_murcef] WHERE [DATA] = #08/10/2008#
    Je vraiment vous remercie...

  16. #16
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Quand tu passes la date de cette façon, tu passes en fait le 10 août 2008.

    C'est pourquoi je te demande de passer la date avec date * 1 sans les # avant et après... Heu... En espérant qu'il y a bien au moins UN enregistrement avec la date d'aujourd'hui dans la table...

  17. #17
    Invité
    Invité(e)
    Par défaut
    Re

    La date d'aujourd'hui n'est pas le 8 octobre 2008, mais le mois d'octobre, le huitième jour de l'année 2008, il faut réfléchir US quand on est dans le code.

    Philippe

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    C'est bizare, mais j'avais déjà essayé (avec l'ADO), et la fonction Format n'avait pas marché, mais maintenant, avec du DAO ça a marché!!!


    Merci merci beaucoup!!!

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

Discussions similaires

  1. [SP-2010] Interdiction de la suppression des éléments d'une liste
    Par brad89 dans le forum SharePoint
    Réponses: 2
    Dernier message: 01/03/2013, 14h27
  2. Réponses: 8
    Dernier message: 26/09/2006, 15h37
  3. Cacher des éléments dans une zone de liste
    Par toto10 dans le forum IHM
    Réponses: 11
    Dernier message: 19/07/2006, 15h03
  4. Réponses: 2
    Dernier message: 12/04/2006, 10h00
  5. Passer des infos d'une zone de liste à une autre
    Par Rinecka dans le forum Access
    Réponses: 1
    Dernier message: 09/01/2006, 11h59

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