liste déroulante

liste déroulante - SQL/NoSQL - Programmation

Marsh Posté le 24-08-2006 à 14:57:53    

Bonjour tout le monde,comment est ce qu'on peut faire dans sql server 2000 une liste déroulante dans une table? par exemple: une table qui se compose de deux clés étrangères et sans me référer à ces deux tables,je veux bien avoir dans chacune des cases une liste déroulante qui liste les données enregistrées dans les colonnes correspondantes aux 2 clés dans leurs tables originales!!!!
Merci d'avance

Reply

Marsh Posté le 24-08-2006 à 14:57:53   

Reply

Marsh Posté le 24-08-2006 à 15:27:04    

c'est pas au sgbd de te fournir la liste, mais à l'IHM que tu vas développer pour exploiter la base.

Reply

Marsh Posté le 24-08-2006 à 16:17:03    

Mais si,et pourquoi alors on fait ce truc de liste déroulante dans Access,et ce dernier est un sgbd??!!!!!!!!!!

Reply

Marsh Posté le 24-08-2006 à 16:18:43    

c'est avant tout une IHM...
 
dans access, tu peux faire des formulaires, des reports, des macros, etc. dans SQL Server, tout comme MySQL, Oracle, DB2 ou n'importe quel SGBD ben... t'as que le moteur de données, en aucun cas des fioritures de la sorte. Un SGBD, c'est juste un service. Ferme-moi tout ce suite Entreprise Manager, t'as absolument pas à modifier les données depuis ce dernier :o

Reply

Marsh Posté le 24-08-2006 à 16:27:05    

mais moi je parle pas d'application,ni des formulaires,je parle que lors du la création des tables il y a une option que les champs des cette dernière soient remplis en faisant référence à d'autre champs d'autres tables,et c'est grâce à des listes déroulantes,

Reply

Marsh Posté le 24-08-2006 à 16:28:51    

c'est la première fois que je travaille avec sql server et j'ai pas travaillé avant avec Oracle,...... c'est pour cela que je pose cette question :)

Reply

Marsh Posté le 24-08-2006 à 16:47:27    

non, dans un SGBD tu spécifies ce qu'on appelle une clé étrangère (foreign key) qui indique que ton champs doit contenir une valeur de la clé primaire d'une autre table. mais ce n'est pas pour autant qu'il va te faire une liste déroulante.
 
si tu crées ces deux tables :
 

Code :
  1. create table marque as
  2. (
  3.      id numeric primary key,
  4.      nom varchar(50) not null
  5. )
  6. go
  7. create table modele as
  8. (
  9.     id numeric primary key,
  10.     nom varchar(50) not null,
  11.     marque_id null
  12. )
  13. go


 
=> tu peux créer ce jeu de données :
 


marque :
1 Renault
2 Citroën
3 Peugeot
 
modele :
1 205 3
2 206 3
3 AX 2
4 Xara 2
5 R5 1
6 Laguna 1
7 Escort 4
8 Panda null


 
On voit que l'Escort fait référence à une marque qui n'existe pas, et c'est mal.
La Panda ne fait référence à aucune marque. Ca peut être gênant aussi.
 
Tu peux donc ajouter une clé étrangère entre les deux tables :

Code :
  1. ALTER TABLE modele
  2. ADD CONSTRAINT fk_marque
  3. FOREIGN KEY (marque_id)
  4. REFERENCES marque (id) ON DELETE CASCADE


 
=> Ici, tu indiques que la colonne modele.marque_id fait référence à la colonne marque.id
Ainsi, tu ne peux mettre dans modele.marque_id que des valeurs issues de marque.id (donc des marques qui existent), ou null
=> Ainsi, tu ne pourra plus écrire la ligne "Escort" car tu n'as pas de marque 4, mais toujours la ligne "Panda", puisqu'elle ne fait référence à aucune marque
 
Si tu veux que la marque soit obligatoire, alors tu mets "modele.marque_id" à "not null" et tu seras obligé de fournir une marque à la création d'un modèle de voiture.
 
Dans mon cas le "delete cascade" indique que si tu supprimes une marque, ça va supprimer en cascade tous les modèles de voitures qui sont de cette marque (à utiliser avec précaution ;))


Message édité par MagicBuzz le 24-08-2006 à 16:48:42
Reply

Marsh Posté le 24-08-2006 à 20:49:43    

Je suis 100% d'accord avec Mr Buzz! Si Access te propose de telles listes déroulantes, c'est parce qu'en fait, Access a tendance à mélanger le concept de BDD, de SGBD et d'IHM.
 
Sinon, pour info, c'est "Xsara" et non pas "Xara" ;)

Reply

Marsh Posté le 24-08-2006 à 22:57:52    

Boarf :D

Reply

Marsh Posté le 25-08-2006 à 08:06:37    

perso je ne considère mm pas access comme un SGBD :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed