Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Case à cocher dans formulaire

5 réponses
Avatar
Bertrand Mellah
Bonjour à tous,

Je suis débutant en Access et je travaille sur un base de données qui
permettrait de simuler des tarifs d'ordinateurs selon leur configuration.

Certains modèles ne peuvent pas recevoir certains types de composants
(mémoire X non compatible avec la carte mère du modèle Y...etc...).
Il me faut donc spécifier pour chaque modèle quels composants sont
compatibles avec lui.
J'ai donc crée une table Composants (Num_Comp, Desc_Comp,Cat_Comp) qui
contient tous les composants disponibles, une base modèle (Num_Mod, Nom_Mod,
Fam_Mod) qui contient les infos sur chaque modèle existant et une table
Config (Num_Model, Num_Comp) qui permet de spécifier quels composants sont
disponibles pour tel modèle.

Mon idée est de créer un formulaire dans lequel on aurait pour chaque
machine la liste de tous les composants disponibles et en face de chaque
ligne une case à cocher pour spécifier si le composant est compatible ou non
avec ce modèle.
Un bouton permettrait ensuite d'insérer les composants compatibles dans la
table Config.
Je suis parvenu à créer un formulaire qui me permet de créer de
modifier/créer de nouveaux modèles (c'était facile ;) ) puis j'y ai inséré
un sous formulaire pour afficher la liste des composants existants.

Mon problème est que je ne parviens pas à créer une case à cocher spécifique
à chaque ligne. La case à cocher que j'ai ajouté dans mon formulaire a le
même nom pour toutes les lignes et je ne parviens pas à m'en sortir.

Toute suggestion sera la bienvenue! D'avance merci pour votre aide.

--
Bertrand

5 réponses

Avatar
3stone
Salut,

"Bertrand Mellah"
| Je suis débutant en Access et je travaille sur un base de données qui
| permettrait de simuler des tarifs d'ordinateurs selon leur configuration.
|
| Certains modèles ne peuvent pas recevoir certains types de composants
| (mémoire X non compatible avec la carte mère du modèle Y...etc...).
| Il me faut donc spécifier pour chaque modèle quels composants sont
| compatibles avec lui.
| J'ai donc crée une table Composants (Num_Comp, Desc_Comp,Cat_Comp) qui
| contient tous les composants disponibles, une base modèle (Num_Mod, Nom_Mod,
| Fam_Mod) qui contient les infos sur chaque modèle existant et une table
| Config (Num_Model, Num_Comp) qui permet de spécifier quels composants sont
| disponibles pour tel modèle.
|
| Mon idée est de créer un formulaire dans lequel on aurait pour chaque
| machine la liste de tous les composants disponibles et en face de chaque
| ligne une case à cocher pour spécifier si le composant est compatible ou non
| avec ce modèle.
| Un bouton permettrait ensuite d'insérer les composants compatibles dans la
| table Config.
| Je suis parvenu à créer un formulaire qui me permet de créer de
| modifier/créer de nouveaux modèles (c'était facile ;) ) puis j'y ai inséré
| un sous formulaire pour afficher la liste des composants existants.
|
| Mon problème est que je ne parviens pas à créer une case à cocher spécifique
| à chaque ligne. La case à cocher que j'ai ajouté dans mon formulaire a le
| même nom pour toutes les lignes et je ne parviens pas à m'en sortir.


Hmmm, ta case à cocher est indépendante...


Je te propose de la remplacer par un petit bouton.
Sur clic du bouton, tu execute une requête de mise à jour qui ira
faire la mise à jour du champ de la table concernée.

Sur clic du bouton, tu possède automatiquement la valeur
de l'identifiant de la ligne concernée... puisque elle aura le focus.

Ce sera quelque chose comme:

CurrentDB.Execute "Update [La table] SET [le champ]=... Where ID=" & Me.ID


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Bertrand Mellah
Bonjour,

Merci pour ta réponse ultra rapide!

Je te propose de la remplacer par un petit bouton.
Sur clic du bouton, tu execute une requête de mise à jour qui ira
faire la mise à jour du champ de la table concernée.

Sur clic du bouton, tu possède automatiquement la valeur
de l'identifiant de la ligne concernée... puisque elle aura le focus.

Ce sera quelque chose comme:

CurrentDB.Execute "Update [La table] SET [le champ]=... Where ID=" &
Me.ID


Mais j'ai peur que ca ne puisse pas marcher. En effet, ma table Config est
vide à l'origine, je ne peux donc pas mettre à jour un enregistrement déjà
existant... (Du moins à la 1ère utilisation).
De plus j'avais choisi les cases à cocher car les configurations changeants,
ils me donnent la possibilité d'ajouter un composant, puis de le supprimer
par la suite si nécessaire. Est ce qu'un "Toggle Button" pourrait être alors
utilisé? Evenement quand enfoncé = ajouter composant dans la table Config
Evenement quand "dé-enfoncé"= retirer ce même composant de la table Config

Et maintenant question bête de newbie, quand tu me dis d'executer une
requête sur le clic du bouton, celà se fait en créant un évènement à l'aide
de l'"expression builder" (désolé pour tous ces mots anglais mais ma version
d'Office en anglais et je préfère éviter de me lancer dans des traductions
hasardeuses...)?

Merci!

--
Bertrand

Avatar
3stone
Salut,

"Bertrand Mellah"
| > Ce sera quelque chose comme:
| >
| > CurrentDB.Execute "Update [La table] SET [le champ]=... Where ID=" &
| > Me.ID
|
| Mais j'ai peur que ca ne puisse pas marcher. En effet, ma table Config est
| vide à l'origine, je ne peux donc pas mettre à jour un enregistrement déjà
| existant... (Du moins à la 1ère utilisation).

Je dois reconnaître que je n'avais (et toujours pas) pas bien compris
ce que représentait la "coche" par rapport aux autres tables...


| De plus j'avais choisi les cases à cocher car les configurations changeants,
| ils me donnent la possibilité d'ajouter un composant, puis de le supprimer
| par la suite si nécessaire. Est ce qu'un "Toggle Button" pourrait être alors
| utilisé? Evenement quand enfoncé = ajouter composant dans la table Config
| Evenement quand "dé-enfoncé"= retirer ce même composant de la table Config

l'inconvénient de la coche est que du fait de son indépendance, elle sera
cochée pour tous les enregistrements du formulaire continu...


| Et maintenant question bête de newbie, quand tu me dis d'executer une
| requête sur le clic du bouton, celà se fait en créant un évènement à l'aide
| de l'"expression builder" (désolé pour tous ces mots anglais mais ma version
| d'Office en anglais et je préfère éviter de me lancer dans des traductions
| hasardeuses...)?

Tu dépose un bouton, sans utiliser l'assistant (baguette magique)
et dans l'événement "sur clic" tu fait ce que tu veux...

Plus généralement, j'ai un problème avec ta conception!


Juste une piste...
Si je relis ton premier message, je ne vois pas comment
la coche peut indique qu'un certain article soit compatible ou non...
Cela doit plutôt se réaliser au niveau des relations entre les articles
et ne retrouver dans le sous formulaire que les composants compatibles
(puisqu'une simple coche ne peut renseigner avec quel composant
il y à compatibilité)


Si tu as une table composants, il te faudrais une table "compatibilités"
qui indique uniquement IDComposantPère, IDComposantFils
Ensuite, un formulaire avec une liste déroulante basée sur la table "Composants"
ayant comme champs "IDComposant, FamilleComposants, Description"
Un sous-formulaire avec la liste de tout les composants autres que la famille
de celui sélectionné dans la liste.
Ensuite, un bouton (ou une coche) qui te permet d'exécuter la fameuse
requête qui ira mettre les valeurs des deux ID dans la table "Compatibilités"

Ensuite, pour l'affichage et recherche, un formulaire qui affiche les détails
du composant "père" et un sous formulaire avec les composants "fils"
qui sont compatibles devient facile grâce à la table "Compatibles"
qui suffit d'ajouter à la source du sous-form

Cela permettra aussi de sélectionner un composant fils et d'afficher
tous les composants père déclarés compatibles

--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Bertrand Mellah
Merci Pierre pour ton aide,

"3stone" wrote in message
news:
Plus généralement, j'ai un problème avec ta conception!


Juste une piste...
Si je relis ton premier message, je ne vois pas comment
la coche peut indique qu'un certain article soit compatible ou non...
Cela doit plutôt se réaliser au niveau des relations entre les articles
et ne retrouver dans le sous formulaire que les composants compatibles
(puisqu'une simple coche ne peut renseigner avec quel composant
il y à compatibilité)


Tu as raison, la raison de cette case à cocher est qu'au début j'avais un
champ nommé "Dispo_Conf" de type Oui/Non dans la table Config. Cette
solution m'était apparu alors que je ne parvenais pas à réaliser un
formulaire tel que je l'avais imaginé (voir plus bas). Mais l'idée de devoir
stocker le statut de l'ensemble des composants existants pour chaque modèle
m'a un peu refroidi.
En effet, mon problème est que les composants dispos pour un modèle donné
peuvent évoluer avec le temps et selon les baisses de prix, le ModA1 pourra
peut être équipé d'un Sempron 3300+ ou d'un graveur de DVD super multi...
Je souhaite donc pouvoir voir dans mon sous formulaire l'ensemble des
composants existants dans la table Composants et avoir une case à cocher en
face qui m'indique si tel composant est rentre actuellement ou non dans la
configuration de ce modèle.
Ayant plus de 160 composants dispos, je ne m'imagine mal effectuer cette
selection composant par composant ou même dans une liste déroulante :-s

Dans cet ex, je peux monter dans le ModA1 deux modèles de CPU, 2 de RAM, 2
disques durs...etc...

Formulaire:
Nom Modèle[ModA1] Famille Modèle [DTR]

Composants disponibles:
CPU AMD Sempron 3300+ (25W) [ ]
CPU AMD Sempron 3000+ (25W) [x]
CPU AMD Sempron 2800+ (25W) [x]
CPU AMD Turion 64 ML-40 2.2G 1MB (35W) [_]
CPU AMD Turion 64 ML-28 1.6G 512K (35W) [_]
CPU PM 780 2.26GHz 533 2MB [_]
CPU PM 745 1.8GHz 400 2MB [_]
CPU PM 735 1.7GHz 400 2MB [_]
CPU PM 725 1.6GHz 400 2MB [_]
CPU Celeron M 380 1.6Ghz 1MB [_]
CPU Celeron M 370 1.5Ghz 1MB [_]
RAM 256 DDR [x]
RAM 512/2x256 DDR [x]
RAM 1024 DDR2 533 [_]
HD 40GB [x]
HD 60GB [x]
HD 80GB [_]
ODD COMBO [x]
ODD DVDDUAL [_]
ODD DVDSUPERMULTI [_]
(...)


Si tu as une table composants, il te faudrais une table "compatibilités"
qui indique uniquement IDComposantPère, IDComposantFils
Ensuite, un formulaire avec une liste déroulante basée sur la table
"Composants"
ayant comme champs "IDComposant, FamilleComposants, Description"
Un sous-formulaire avec la liste de tout les composants autres que la
famille
de celui sélectionné dans la liste.
Ensuite, un bouton (ou une coche) qui te permet d'exécuter la fameuse
requête qui ira mettre les valeurs des deux ID dans la table
"Compatibilités"


Je pense que je n'ai pas clairement exposé ma situation et si je ne m'abuse
ma BD est déjà basée sur cette suggestion:
J'ai une table Composants (Num_Comp, Desc_Comp,Cat_Comp) qui
contient tous les composants disponibles.
Petit extrait pour être plus clair (en tout env 160 enregistrements dans
cette table)

Num_Comp Desc_Comp Cat_Comp
25 AMD Sempron 3300+ (25W) 2
26 AMD Sempron 3000+ (25W) 2
27 AMD Sempron 2800+ (25W) 2
28 AMD Turion 64 ML-40 2.2G 1MB (35W) 2
33 AMD Turion 64 ML-28 1.6G 512K (35W) 2
34 PM 780 2.26GHz 533 2MB 2
42 PM 745 1.8GHz 400 2MB 2
43 PM 735 1.7GHz 400 2MB 2
44 PM 725 1.6GHz 400 2MB 2
45 Celeron M 380 1.6Ghz 1MB 2
46 Celeron M 370 1.5Ghz 1MB 2
47 256 DDR 3
48 512/2x256 DDR 3
59 1024 DDR2 533 3
(...)

Ensuite j'ai une base modèle (Num_Mod, Nom_Mod,
Fam_Mod) qui contient les infos sur chaque modèle existant
Num_Mod Name_Mo Family_Mod
1 ModA1 2
2 ModA2 2
3 ModA3 2
4 ModA4 2
18 ModF1 4
19 ModE1 3

et une table Config (Num_Model, Num_Comp) qui permet de spécifier quels
composants sont
disponibles pour tel modèle.
Num_Model Num_Comp
1 1
1 2
1 115
2 1
2 3
2 4
2 50
2 60
(...)

Mon problème est bien de remplir et mettre à jour cette table, car je ne me
sens pas le courage de rentrer tous les composants "compatibles" pour chaque
modèle à la main... :( Le formulaire que j'avais imaginé me semblait le plus
rapide et ergonomique pour cette tâche.

Ensuite, pour l'affichage et recherche, un formulaire qui affiche les
détails
du composant "père" et un sous formulaire avec les composants "fils"
qui sont compatibles devient facile grâce à la table "Compatibles"
qui suffit d'ajouter à la source du sous-form
Cela permettra aussi de sélectionner un composant fils et d'afficher
tous les composants père déclarés compatibles

--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw



J'espère que le détail des tables aura permis de clarifier ma situation.

--
Bertrand

Avatar
3stone
Salut,

"Bertrand Mellah"
| Ayant plus de 160 composants dispos, je ne m'imagine mal effectuer cette
| selection composant par composant ou même dans une liste déroulante :-s


faut bien que quelqu'un le fasse... une première fois ;-)


| Dans cet ex, je peux monter dans le ModA1 deux modèles de CPU, 2 de RAM, 2
| disques durs...etc...
|
| Formulaire:
| Nom Modèle[ModA1] Famille Modèle [DTR]
|
| Composants disponibles:
| CPU AMD Sempron 3300+ (25W) [ ]
| CPU AMD Sempron 3000+ (25W) [x]
| CPU AMD Sempron 2800+ (25W) [x]
<snip>


La case à cocher devrait donc se retrouver dans la table des correspondances
modèle <-> composants

Pour le reste, la "présentation" dans les formulaires, c'est au choix...

--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw