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 :

[vba] bouton de suppression spécifique


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut [vba] bouton de suppression spécifique
    Re-Bonjour

    Bon j'ai encore un souci lol
    Je cherche à créer un bouton qui me supprime seulement certains champs d'une table.

    J'ai une table PORT avec 3 champs (N°Switch, Port, Prise). Dans cette table figure tous les ports de tous mes switchs. Le champ Prise est rempli par la prise alimentée par tel port de tel switch donc soit il y a un le num de prise dedan soit il y a un blanc.
    Ce que je veux, c'est que mon bouton me supprime (ou plutot me remette à blanc) le contenu de mon champ Prise dans ma table PORTS mais aussi l'enregistrement associé dans ma table PRISE. J'espère que mes explications sont claires

    j'ai testé différents choses et je n'arrive pas à ce que je veux. Pour exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim test
    Dim test2
     
    test = "UPDATE T_PORT SET Prise = '" & Resultat.Value & "' WHERE [N°Switch] = '" & Switch.Value & "' AND PORT = '" & Port.Value & "'"
    test2 = "DELETE [Port] FROM T_PORT WHERE Prise =  '" & Resultat.Value & "'; "
    MsgBox test
    MsgBox test2

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Bonjour,
    Ta piste n'est pas mauvaise.

    Il faut que tu commences par stocker la valeur de l'id de la prise à effacer dans une variable, ensuite tu effaces ce record de la table prise par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE prise.* FROM TablePrise WHERE idPrise = " & variable
    puis tu mets à jour le ou les records de ta table Port où le champ Prise est égal à ta variable par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE port SET prise = Null WHERE prise = " & variable
    Tu peux aussi mettre à jour par 0 si le champ s'y prête.
    L'ordre des requêtes n'a pas d'importance à partir du moment où tu as stocké l'id prise dans une variable (Dim idPrise as 'Type du champ)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Merci pour ta réponse Oleff

    J'ai testé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim val
    Dim val2
    val = Me.Resultat.Value
    val2 = "DELETE [Prise] FROM T_PORT WHERE Prise = " & val & ""
    val2 = val2 & "UPDATE T_PORT SET Prise = Null WHERE Prise = '" & val & "';"
    mais meme effet c'est à dire qu'il m'efface tout l'enregistrement dans T_PORT (composé de 3 champs Switch, Port, Prise) alors que je veux juste qu'il me remette à blanc le contenu de Prise

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Tu n'as pas bien lu ce que j'avais mis
    Ton update me semble bon, mais ton Delete doit s'appliquer sur la table prise et non sur la table port.
    Là tu effaces le record de la table port.

    Conseil, type tes variables, c'est plus facile à lire et évites des erreurs.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Ba oui j'efface le record de la table Port, c'est ce que je veux.
    Je reprends :

    -table Prise : Prise, Remarques => ici tout l'enregistrement doit être effacé
    -table Port : Switch, Port, Prise => et c'est ici que je ne veux que effacer le contenu du champ Prise.

    Donc pour moi,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val2 = "DELETE [Prise] FROM T_PORT WHERE Prise = " & val & ""
    , ca veut dire que ça efface le champ Prise de la table T_PORT où Prise = ma variable

    Donc à lire ça comme ça, ça doit marcher et faire exactement ce que je veux. Là dans l'etat ça m'efface bien tout l'enregistrement dans la table Prise mais aussi tout l'enregistrement dans la table Port, ce qui fait qu'il me dit qu'il n'y a plus que 23 ports sur mon switch

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Bon j'ai testé ceci, et ça donne le meme effet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim val
    Dim val2
    val = Me.Resultat.Value
    val2 = "DELETE [Prise] FROM T_PRISE WHERE Prise = " & val & ""
    val2 = val2 & " UPDATE T_PORT SET Prise = Null WHERE Prise = '" & val & "';"

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 31
    Points
    31
    Par défaut
    Bonjour

    Quelqu'un pour m'aider ??

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    On peut difficilement t'aider si tu ne lis pas ce que l'on te marque.
    Va dans l'aide access :F1: et lis ce que fait un DELETE.

    Crée une requête Suppression qui supprime des enregistrements dans une ou dans plusieurs des tables mentionnées dans la clause FROM qui correspond à la clause WHERE.

    Copyright (c) 1996 Microsoft Corporation
    Il faut que tu effaces le record dans prise et que tu mettes à jour celui de port.
    Effacer une valeur revient à lui attribuer une valeur nulle et non à effacer un champ.

Discussions similaires

  1. [XL-2010] VBA : Bouton contrôle de formulaire avec insertion forme et suppression ancienne
    Par anonymous9 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/03/2014, 20h24
  2. [VBA] Problem de suppression de composant
    Par jesus144 dans le forum IHM
    Réponses: 9
    Dernier message: 26/04/2006, 10h03
  3. [VBA][Word] débutant suppression d'une page
    Par cyrcroix dans le forum VBA Word
    Réponses: 3
    Dernier message: 30/12/2005, 19h22
  4. [VBA-A] Problème Suppression enreg en cours
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 20h08
  5. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27

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