Bonjour à tous,
Je recherche de l'aide pour une question un peu difficile à exprimer et pour laquelle mes recherches sur le net ne donne rien. Je précise que mes cours de SQL sont loins derrière moi et que je découvre Access, ce n'est pas mon domaine de compétences.
Néanmoins la base que je créé depuis 1 mois fonctionne bien mais je cherche à y mettre quelques garde-fou pour éviter les mauvaises manipulations de l'utilisateur.
Je vais m'appuyer sur une base que j'ai créé exprès pour vous faire un exemple, vous la trouverez en pièce jointe en version Access 2000.
Si je réduis mon problème au minimum, voilà en gros comment se présente les relations de ma base :
En se basant là dessus, l'utilisateur pourra sélectionner dans un formulaire avec des listes de choix : une personne, un modèle de voiture et la quantité possédée. Seulement je voudrais faire en sorte qu'il soit impossible pour une personne donnée de sélectionner un modèle de voiture qui l'ait été dans un autre enregistrement.
Mes recherches sur le net m'ont amené sur l'idée de modifier la requête qui permet de remplir la liste de choix des voitures. L'idée était d'utiliser un WHERE NOT EXISTS en SQL (que je connais peu) pour éliminer les éléments déjà dans la liste.
Ca pourrait ressembler à :
J'ai mis de côté les inner join (que Access met tout seul) pour simplifier mais je pense qu'il y a pas mal de fautes. Le problème principal reste surtout ligne 7 avec mon ".actuel" qui n'existe pas du tout mais que je ne vois pas comment exprimer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT IDCar FROM Car WHERE NOT EXISTS ( SELECT JointIDCar, JointIDPeople FROM JointTable WHERE JointIDPeople = JointIDPeople.actuel )
Il y a un obstacle supplémentaire en considérant que l'enregistrement n'est pas encore sauvegardé et donc que le JointIDPeople n'est pas connu au moment de la recherche. Je me disais qu'en utilisant une macro je pourrais forcer l'enregistrement pour qu'il existe malgré tout.
Bref, tout ça devient un peu trop bidouille à mon goût et j'ai besoin d'avis extérieur.
- Est-ce la bonne voie qu'utiliser le WHERE NOT EXISTS ? Si oui, comment pourrais-je l'implanter ?
- Est-ce que je veux faire est tout simplement possible ?
- Avez-vous d'autres idées à explorer ? D'autres solutions ?
Ce n'est pas un point essentiel, dans mon application la liste équivalente à la liste des voitures ici est petite, ce qui permet de contrôler assez facilement les données. Néanmoins, pour le confort de l'utilisateur et par curiosité j'aimerai savoir si c'est faisable.
Et au pire, je lui mettrai à disposition une requête de recherche de doublons et il corrigera le tir lui même.
Merci d'avance de votre aide !
Partager