OVH Cloud OVH Cloud

Tableau d'interrupteurs dans SQL Serveur

6 réponses
Avatar
digging
Hello !
Quelqu'un a-t-il une idée sur la façon de gérer un tableau d'interrupteurs
dans SQL Serveur ? Par exemple pour monter un module de formation, je dois
indiquer les nievaux concernés - initiation, avancé, perfectionnement,
expert - mais l'utilisateur peut cocher les type de module disponible. Il
peut très bien avoir pour la formation bureautique, avancé et expert qui
soient seuls cochés !
Pour info, dans Windev il existe une rubrique appellée tableau
d'interrupteurs dont on spécifie juste la dimension maxi. Comment traduire
ceci simplement dans SQL Serveur ?
Merçi.

6 réponses

Avatar
Patrice
Ce que tu décris de WinDEv me semble être une gestion de drapeaux : chaque
bit d'une valeur entière sert d'indicateur 0 ou 1 pour indiquer si l'option
correspondante est activée... (cf les opérateurs & et | dans la doc SQL
Server).

Cela pourrait aussi être modélisé sous forme d'une table de couples
(module,niveau) qui répertorie pour chaque module, les niveaux concernés. La
soultion 2 me parait généralement la plus orthodoxe notamment si tu
souhaites attacher des informations à chacun de ces couples (les prérequis
conseillés peut-être ?).

Patrice

"digging" a écrit dans le message de
news:uIQbx$
Hello !
Quelqu'un a-t-il une idée sur la façon de gérer un tableau d'interrupteurs
dans SQL Serveur ? Par exemple pour monter un module de formation, je dois
indiquer les nievaux concernés - initiation, avancé, perfectionnement,
expert - mais l'utilisateur peut cocher les type de module disponible. Il
peut très bien avoir pour la formation bureautique, avancé et expert qui
soient seuls cochés !
Pour info, dans Windev il existe une rubrique appellée tableau
d'interrupteurs dont on spécifie juste la dimension maxi. Comment traduire
ceci simplement dans SQL Serveur ?
Merçi.





Avatar
Fred BROUARD
une matrice de bit, c'est à dire en modélisation deux entitées jointes en n:m
avec un attribut d'association de type bit.

En SQL il suffit deonc de faire un cross join pour lier l'ensemble et positionner
les bits un à un.

A +

digging a écrit:
Hello !
Quelqu'un a-t-il une idée sur la façon de gérer un tableau d'interrupteurs
dans SQL Serveur ? Par exemple pour monter un module de formation, je dois
indiquer les nievaux concernés - initiation, avancé, perfectionnement,
expert - mais l'utilisateur peut cocher les type de module disponible. Il
peut très bien avoir pour la formation bureautique, avancé et expert qui
soient seuls cochés !
Pour info, dans Windev il existe une rubrique appellée tableau
d'interrupteurs dont on spécifie juste la dimension maxi. Comment traduire
ceci simplement dans SQL Serveur ?
Merçi.






--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
bruno reiter [MVP]
soit effectivement par des col de type bit, soit par du binary en utilisant
des opérateurs bitwise.

br

"digging" wrote in message
news:uIQbx$
Hello !
Quelqu'un a-t-il une idée sur la façon de gérer un tableau d'interrupteurs
dans SQL Serveur ? Par exemple pour monter un module de formation, je dois
indiquer les nievaux concernés - initiation, avancé, perfectionnement,
expert - mais l'utilisateur peut cocher les type de module disponible. Il
peut très bien avoir pour la formation bureautique, avancé et expert qui
soient seuls cochés !
Pour info, dans Windev il existe une rubrique appellée tableau
d'interrupteurs dont on spécifie juste la dimension maxi. Comment traduire
ceci simplement dans SQL Serveur ?
Merçi.





Avatar
digging
Voici la solution que j'ai utilisé pour l'instant : dans ma table sql j'ai
une rubrique disons "NiveauFormation char(10)" ; mais en réalité chaque
caractère est utilisé comme un bit pour fire ma collection d'interrupteur
dans une form. J'écris un transcodage aller-retour. Ceci ma simplifie ma
table sql et me garantie que chaque occurence de ma table aura bien TOUS les
10 bit-caractères et mon utilisateur pourra dans sa form cocher ceux qui
l'intéresse. Mais il reste la lourdeur du transcodage.

Je reste preneur d'une solution moins manuelle que celle-là.
Avatar
digging
"Patrice" a écrit dans le message de news:

Ce que tu décris de WinDEv me semble être une gestion de drapeaux : chaque
bit d'une valeur entière sert d'indicateur 0 ou 1 pour indiquer si


l'option
correspondante est activée... (cf les opérateurs & et | dans la doc SQL
Server).

Cela pourrait aussi être modélisé sous forme d'une table de couples
(module,niveau) qui répertorie pour chaque module, les niveaux concernés.


La
soultion 2 me parait généralement la plus orthodoxe notamment si tu
souhaites attacher des informations à chacun de ces couples (les prérequis
conseillés peut-être ?).



bonjour Patrice
Le tableau d'interrupteur de Windev résout un problème d'analyse de manière
très éléguante, on peut dire ce qu'on veut !
Le tableau m'assure que chaque occurrence de ma table aura bien la totalité
du tableau. L'utilisateur se contente juste de cocher les options retenus
dans la fenêtre. Je précise que les libellés des interrupteurs ni le nombre
d'éléments du tableau ne sont pas modifiables. La dimension du tableau est
fixé dans la base de données, les libellés des interrupteurs sont fixés une
bonne fois pour toute dans le design.
Merçi.
Avatar
digging
"Fred BROUARD" a écrit dans le message de news:
O#
une matrice de bit, c'est à dire en modélisation deux entitées jointes en


n:m
avec un attribut d'association de type bit.

En SQL il suffit deonc de faire un cross join pour lier l'ensemble et


positionner
les bits un à un.

A +



Merçi Fred. Je vais creuser ton idée. J'ai aussi acheté ton book au passage,
histoire de mettre toutes les chances de mon coté !
digging