Salam, Bonjour
Comment limiter le nombre de ligne dans un sous formulaire
selon le contenu d'un champ dans le formulaire
Merci d'avance
Salam, Bonjour
Comment limiter le nombre de ligne dans un sous formulaire
selon le contenu d'un champ dans le formulaire
Merci d'avance
Bonjour.
C'est faisable mais pas particulièrement simple.
Pourquoi as-tu besoin de cela ?
A+
Vous voulez une réponse rapide et efficace à vos questions téchniques ?
Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.
Salam, Bonsoir
Merci pour la reponse
limiter les lignes pour des raisons technique de l'application
Veux tu me montrer commeent faire
Merci encore une fois
Bonjour.
En fait savoir pourquoi tu veux le faire et comment est montée ta BD conditionne la réponse.
- Une méthode polyvalente mais pas forcément la mieux adaptée consiste à créer à priori le nombre de ligne voulues (ex : 10 lignes) puis d'interdire à l'utilisateur d'en ajouter ou d'en enlever.
- Une autre est de compter le nombre de lignes et d'interdire à l'utilisateur d'en ajouter quand il a atteint un certain nombre (ex : 25 lignes).
- Encore une autre est de s'assurer que Access refuse d'ajouter plus de lignes en contrôlant cela via les données.
Ex : Tu vends seulement 10 produits différents, et tu n'autorises qu'un seul produit par ligne.
Dés que l'utilisateur voudra ajouter un 11ième produit, Access va refuser car cela va créer un doublon.
Donc as-tu besoin de :
- 1 nombre fixe de lignes connu en amont ?
- 1 nombre maximum de lignes ?
- Peux-tu contrôler ce nombre par les données sélectionnées ?
A+
Vous voulez une réponse rapide et efficace à vos questions téchniques ?
Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.
Salam, Bonjour
Execuse moi pour le retard
Ce que je veut les trois proposition si posibble bien sur
pour voir et connaitre la difference entre eux
parce que moi ce qui m'interesse c'est connaitre et apprendre access
c'est pour ca je vous demande les trois proposition
Merci bien
OK.
Note que ces méthodes peuvent être combinées.
Je vais commencer par la création à priori.
Il faut que tu définisses les propriétés "Ajout autorisé" et "Suppression autorisée" de ton sous-formulaire à "non" pour empêcher l'utilisateur d'ajouter ou de supprimer des lignes.
Puis avec du code VBA tu peux faire quelque chose comme :
Je te reviens plus tard pour la suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 dim db as dao.database:set db=currentdb dim r as dao.recordset:set r=db.oepnrecordset("TaSource", dbopenDynaset) dim nbLigne as long:nbLigne=UneValeur ''À assigner en fonction du besoin dim i as long:for i=1 to NbLigne r.addnew 'Ici assigner des valeurs si nécessaire r.update next i r.close:set r=nothing db.close:set db=nothing
A+
Vous voulez une réponse rapide et efficace à vos questions téchniques ?
Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.
Bonjour,
je me suis rappelé cette contribution qui m'avait inspiré à l'époque
https://www.developpez.net/forums/d3...registrements/
CDLT
"Always look at the bright side of life." Monty Python.
Re-bonjour.
Autre solution simple, par les données.
Tu crées une table de référence, par exemple :
tblProduit
ClefProduit
DesignationProduit
Tu crées une table saisie du genre
tblDetailCommande
ClefDetailCommande
ClefCommande
ClefProduit
QteProduit
Tu définis un index unique sur ClefCommande & ClefPrpoduit qui va assurer que tu n'as jamais qu'une et une seule fois la combinaison Commande / Produit.
Donc tu as au maximum pour chaque commande un nombre de lignes égale au nombre de produits.
Si l'utilisateur essaye de mettre 2 fois le même produit dans la même commande, il y a une erreur et l'ajout du second est impossible.
Tu mets une relation avec intégrité référentielle entre tblProduit et tblDetailCommande mais ça c'est juste une bonne gestion des données, ce n'est pas lié au contrôle du nombre de lignes.
A+
Vous voulez une réponse rapide et efficace à vos questions téchniques ?
Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.
Enfin voici la solution la plus compliquée : par le comptage des lignes.
Il faut avoir quelque part l'information sur le nombre de lignes.
Ex, avec la table
tblDetailCommande
ClefDetailCommande
ClefCommande
ClefProduit
QteProduit
On pourrait utiliser DCount("ClefDetailCommande","tblDetailCommande","[ClefCommande]=" & ClefCommande) qui va te donner le nombre de lignes dans la commande.
Et dans le formulaire sur l'événement Sur Activation, tester cette valeur. Si cette valeur < Nb Ligne Max, autoriser l'ajout, sinon l'interdire.
quelque chose comme :
Il est possible qu'il faille aussi appeler ce du sur les événement "Après Insertion" et "Après Suppression".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if Nz(me.NbLigneCommande<NbLigneMax) then me.allowaddition=true else me.allowaddition=false end if
A+
Vous voulez une réponse rapide et efficace à vos questions téchniques ?
Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.
Salam, Bonjour
Merci bien pour votre reponse C bon
il y a une autre question si c possible bien sur
j'ai un champ nommé C1 que je doit saisir le mois Mars par exemple
et un autre chaque nommé C2
comment faire pour que le C2 affiche le premier jour du mois du C1 c'est a dir le 1-3-2019
Merci d'avance
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager