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 :

Contrôler qu'un enregistrement n'existe pas dans un sous-formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 105
    Points : 68
    Points
    68
    Par défaut Contrôler qu'un enregistrement n'existe pas dans un sous-formulaire
    bonjour,

    une petite question sans doute pas très difficile mais je ne m'en sors pas.

    j'ai un sous-formulaire contenant les lignes de commande (jusqu'ici, très standard). Au départ, j'avais mis un index unique sur l'id_commande ET l'id_produit pour contrôler qu'on ne saisisse qu'une fois le même produit par commande.

    Pour diverses raisons, je dois enlever l'index unique; il doit donc être possible de saisir plusieurs fois le même produit dans la même commande.

    Pour cela, j'ai supprimé l'index unique mais j'aimerais toutefois contrôler, par vba (ou autre solution), que le produit n'existe pas.

    si le produit est déjà saisi dans le sous-formulaire, message d'alert et continuer, sinon, continuer.

    Comment puis-je transformer cette dernière phrase via vba?

    merci de votre aide.
    skeut

  2. #2
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 406
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour,

    Sur l'évènement Après mise à jour de ton champ id_produit tu peux essayer de compter les enregistrements de ton sous-formulaire.

    Pour cela, regarde du côté du tutoriel Les Fonctions de Domaine dans Access

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    Bonjour Gabout

    Merci pour la réponse. C'est justement le problème que je rencontre, j'ai bien l'impression qu'aucune fonction de domaine ne correspond à mes besoins.

    DCount permet de compter; moi je souhaite trouver si la valeur de l'id_produit existe déjà dans le sous-formulaire.

    J'ai bien pensé à DLookup mais cette fonction permet de rechercher dans un table; moi je dois chercher dans le sous-formulaire uniquement.

    Si qqn à des précisions... merci d'avance.
    Damien

  4. #4
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 406
    Points : 1 683
    Points
    1 683
    Par défaut
    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim NbCommandes as long
    NbCommandes=dcount("[id_produit"],"tblCommandes","[id_commande]=" & me.id_commande)
    If NbCommandes=0 then
      msgbox("pas de commande en cours"
    else
      msgbox(NbCommandes & "commande(s) en cours")
    end if
    Remplace les noms de champs et de table par tes appellations.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    merci pour le bout de code, j'ai testé comme ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim NbCommandes As Long
    NbCommandes = DCount("[Num_Produits]", "LignesCommandes", "[Num_Commandes]=" & Me!ztNumCommande)
    MsgBox Me!ztNumCommande
    If NbCommandes = 0 Then
    	'ne rien faire
    Else
    	MsgBox "Le produit existe déjà dans cette commande, souhaitez-vous annuler ou continuer?"
    End If
    Malheureusement, c'est ce que je craignais, la variable NbCommandes contient le nombre de lignes de commande de la commande, autrement dit, le nombre de produit différents commandés. Ce n'est pas tout à fait ce que je cherche.

    Je souhaiterais contrôler, qu'un produit ne figure pas sur 2 lignes différentes; j'aurais donc besoin de contrôler si le numéro de produit figure déjà dans la table lignesCommandes POUR CETTE COMMANDE LA.

    Est-ce qu'on peut avec Dcount?

    merci d'avance pour votre patience

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    désolé, c'est tout bon: ma clause where n'était pas complète.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim NbCommandes As Long
    NbCommandes = DCount("[Num_Produits]", "LignesCommandes", "[Num_Produits]=" & Me!ztNUMEROProduit & "AND [Num_Commandes]=" & Me!ztNumCommande)
     
    If NbCommandes = 0 Then
        'ne rien faire
    Else
        MsgBox "Le produit existe déjà dans cette commande, souhaitez-vous annuler ou continuer?"
    End If
    merci encore
    skeut

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

Discussions similaires

  1. [AC-2003] Données enregistrées lorsque je clique dans le sous formulaire
    Par flet le kid dans le forum IHM
    Réponses: 0
    Dernier message: 06/04/2009, 16h08
  2. Réponses: 3
    Dernier message: 09/05/2006, 17h21
  3. mon poste n'existe pas dans voisinage réseau
    Par StyleXP dans le forum Administration
    Réponses: 6
    Dernier message: 13/03/2006, 13h06
  4. [Débutant]TAction Manager n'existe pas dans Supplement.
    Par Geache dans le forum Composants VCL
    Réponses: 3
    Dernier message: 06/03/2006, 17h08
  5. Réponses: 8
    Dernier message: 26/01/2006, 14h47

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