Access, desactiver champs si

Résolu/Fermé
rafr1 Messages postés 5 Date d'inscription vendredi 30 mars 2012 Statut Membre Dernière intervention 8 juin 2012 - 30 mars 2012 à 17:22
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 2 avril 2012 à 20:17
Bonjour,

Voici un joli casse tête pour les crack de la compréhension de problèmes posés sue ce site par des gens dont la systhétisation ne fait pas partie de leur vocabulaire!!!

Tout ce qui suit n'est qu'une petite partie d'une DB Access:

J'ai créé un formulaire1 comportant 7 champs qui me permettent d'ajouter ou d'éditer des enregistrements dans une table1. Il s'agit là de création de lignes de "sous -budgets" avec, entre-autres, un n° code par ligne budgétaire allouable à différentes dépenses.

J'ai, ensuite créé un formulaire "Dépenses" dans lequel un des champs est défini afin de pouvoir assigner à ladite dépense, le n°code de la ligne budjétaire correspondante. Ces enregistrements de dépenses viennent ensuite s'inscrire dans une table "Dépenses", dans laquelle une collonne est réservée pour l'inscription du n°code de la ligne budjétaire correspondante.

Voici ma demande conditionnelle (on parle ici de l'émulation des enregistements du formulaire1):

- Tant qu'aucun enregistrement de dépense n'à été affectée à telle ligne budgétaire, je dois pouvoir modifier tous les champs de l'enregistrement de cette ligne budgétaire sur mon formulaire1
- Par contre, si le n° de telle ligne budgétaire à déjà été affectée à une dépense, trois champs de mon formulaire1 de l'enregistrement de cette ligne budgétaire doivent être bloqués.

A vos méninges! Et merci infiniment par avance pour toute aide à ce sujet.
RAF


A voir également:

2 réponses

OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
30 mars 2012 à 22:47
Bonsoir,
c'est possible et même facile mais il faudra coder en VBA, je le fais pour vous, mais avant de commencer, ok pour vous ? VBA ça vous parle ?
2
Bonjour OlivrT,
Merci pour votre réponse si prompte. Je vous serai infiniment reconnaissant si vous alliez plus en avant dans votre gentille proposition. Oui sans être un expert, je suis en mesure de bidouiller en VBA...
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
2 avril 2012 à 12:50
Avant d'attaquer le VBA, il faut afficher un formulaire qui permet de voir pour un budget ses dépenses :


1) Créez un formulaire où la source des données est la table Budget, appelons-le "frmBudgets"
Ajoutez-y par exemple la référence du budget.

Attention, dans les propriétés de ce formulaire, choisissez "Format > "Default View" > "Single Form"

2) Créez un second formulaire où la source des données est la table Dépenses, appelons-le "sfrmDepensesBudget".
Ajoutez-y par exemple, le montant de la dépense.

Attention, dans les propriétés de ce formulaire, choisissez "Format > "Default View" > "Continuous Forms"

3) Mettez le formulaire "Budget" en mode "Design"

4) Faites-un glisser-dépacer du seconde formulaire (sfrm ...) dans celui des budgets

Pour que cela fonctionne il faut évidemment que l'identidiant d'un Budget se retrouver dans la table des dépenses.

Ne connaissant pas vos champs, je vais appeler ID_Budget" le champq qui identifie de manière unique un budget au sein de la table BUDGETS et FK_BUGDET le champ qui permet de retrouver à quel buget les dépenses associées dans la table DEPENSES

5) Sélectionnez le bord du sous-formulaire et choisissez "Propriétés"
6) Cliquez sur l'onget "Data"
7) Définissez la clé maître > "Link Master Fields" recevra donc ID_BUDGET
8) Définissez la clé étrangère > "Link Child Fields" recevra donc FK_BUDGET

Testez !

Vous devez maintenant voir apparaître pour le budget "x" les dépenses "y" au fur et à mesure que vous parcourez les enregistrements de la table Budgets.

Quand ce sera fait. On passera à la seconde étape pour le VBA



0
Merci infiniment pour cette première partie de réponse OlivrT, je vous demanderai un peu de patience, je teste et vous ferai signe dès que j'aurai atteint le résultat escompté dans votre explication... Je vous tiendrai au courant dans la journée de demain (3avr). Merci encore!
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
2 avril 2012 à 20:17
Pas de souci, pour l'instant quand je suis au boulot, je réponds quand je suis en pose, mais bientôt l'accès sera verrouillé :-/ Mais de toutes façons le soir, je répondrai.
Prenez votre temps. Prenez compte de ces petits conseils précieux :
1) Ne donnez pas de donner avec des espaces aux noms des tables, requêtes, champs, ...
2) Mettre une clé primaire dans les tables "maitre"
3) Ne mettez plus que nécessaire pour la taille des champs. Exemple : Évitez un champ "Prénom" de 50 caractères ! 10 suffisent amplement.
4) Respectez ces quelques conventions syntaxiques que vous aideront plus tard !
txt[Nom] = zone de texte
lbl[Nom] = Etiquette
btn[Nom] = Bouton
cbo[Nom] = Zone de liste déroulante
lst[Nom] = Zone de liste
frm[nom] = Nom d'un formulaire
sfrm[Nom] = Nom d'un sous-formulaire
rpt[Nom] = Nom d'un rapport
qsel[Nom] = Pour une requête de sélection
qapp[Nom] = Pour une requête d'ajout
qdel[Nom] = Pour une requête de suppression
qupd[Nom] = Pour une requête de mise à jour

A bientôt
0