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 :

Savoir si un champ existe dans une table


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 137
    Points : 30
    Points
    30
    Par défaut Savoir si un champ existe dans une table
    Bonjour tout le monde,


    J'ai un formulaire avec des champs avec des séries de numéros (champ : numbague)

    Je voudrais que l'utilisateur puisse supprimer n'importe quelle numéro à condition qu'elle n'existe pas dans ma table "Ma table".

    Mon début de code :

    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
    Select Case MsgBox("Etes-vous sur de vouloir supprimer le numéro de bague ?", vbOKCancel, "Suppression d'une bague")
    Case vbOK
     
    If Me.numBague = "(Select * From [matable] Where numbague = me.numBague)" Then
     
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdDeleteRecord
     
    Else
     
    MsgBox ("Vous ne pouvez pas supprimer.")
     
    End If
     
    Case vbCancel
     
    End Select
    La requete doit être fausse, je ne vois pas comment l'écrire pour vérifier si le champ existe dans la table. Merci d'avance et merci pour ce forumet site complet.

  2. #2
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Bonjour,

    Une solution serrai de mettre la requete SQL dans un objet recordset qui permet de compter le nombre d'enregistrements (du résultat de la requete).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim rst As Recordset
     
    Set rst = Currentdb.OpenRecordset("SELECT * FROM [matable] WHERE numbague = " & me.numBague & ";")
     
    Msgbox "Nombre d'enregistrements : " & rst.RecordCount
    Attention sur certaines version d'access il est nécessaire d'aller au dernier enregistrement pour que le compteur se mettre correctement à jour

    Pour se positionner sur le dernier enregistrement:


  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 137
    Points : 30
    Points
    30
    Par défaut
    Merci beaucoup Tonioyo. Peut-on mettre cette requete entre un if ?

    Si la requete est juste alors on ne supprime pas.

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

    Je t'invite à lire ce tuto sur DAO : Définition et manipulation de données avec DAO

    Tu y trouveras toutes les informations ainsi que la suppression.

    Philippe

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 137
    Points : 30
    Points
    30
    Par défaut
    Tellement d'infos que je ne trouve pas ce que je cherche. Pourrais-tu m'aiguiller stp ?

  6. #6
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    En fait tu peux faire ceci:
    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
     
    'Selon la version d'access il peu arriver que l'on doit mettre
    'rst comme Object
    Dim rst As Recordset
     
    Set rst = Currentdb.OpenRecordset("SELECT * FROM [matable] WHERE numbague = " & me.numBague & ";")
     
    'Eventuellement selon la version d'access
    rst.moveLast
    rst.MoveFirst
     
    if rst.RecordCount > 0 then 
       'Instructions de suppression de l'enregistrement
    else
       'Mettre un message disant que la suppression est impossible
    end if
     
    'Ne pas oublier de désallouer les objets
    rst.close
    Set rst = Nothing

Discussions similaires

  1. Savoir si une colonne existe dans une table
    Par Deciprog dans le forum SAS Base
    Réponses: 4
    Dernier message: 26/02/2010, 19h46
  2. Réponses: 4
    Dernier message: 06/01/2010, 20h58
  3. Réponses: 2
    Dernier message: 08/11/2007, 10h54
  4. Réponses: 2
    Dernier message: 08/11/2007, 10h54
  5. Existence dans une table d'un champ entré
    Par spleak dans le forum Access
    Réponses: 1
    Dernier message: 27/01/2007, 15h56

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