Access, desactiver champs si
Résolu
rafr1
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
OlivrT Messages postés 323 Date d'inscription Statut Membre Dernière intervention -
OlivrT Messages postés 323 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Access, desactiver champs si
- Desactiver rond bleu whatsapp - Guide
- Desactiver uac - Guide
- Désactiver compte facebook - Guide
- Comment désactiver le mode sécurisé - Guide
- Access runtime ✓ - Forum Access
2 réponses
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 ?
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 ?
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
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
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
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
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...