Faire disparaître de la liste déroulante toute valeur déjà selectionnée

Résolu/Fermé
i_john Messages postés 9 Date d'inscription vendredi 18 octobre 2019 Statut Membre Dernière intervention 13 décembre 2019 - 18 oct. 2019 à 17:54
i_john Messages postés 9 Date d'inscription vendredi 18 octobre 2019 Statut Membre Dernière intervention 13 décembre 2019 - 20 oct. 2019 à 00:09
Bonjour,



Configuration: Windows / Chrome 77.0.3865.120


Bonjour à tous,
J’ai un problème identite à Issakol
En vue de préparer une distribution de bon de restauration et au regard du nombre de personnes ciblé, j’envisage créer une base de données sous access 2003 pour le suivi de cette activité
Informations :
1)les bénéficiaires seront enregistrés avant le début de l’opération
2)chaque semaine, des bons de restauration sont remis à ceux qui se présentent
3)le lendemain de chaque opération, deux états doivent être établis ; ceux qui se sont présentés d’un côté et ceux qui ne sont pas venus de l’autre
4)en fin d’année, une situation globale est établie à destination de plusieurs intervenants
De ce fait, j’ai pensé à la confection de trois tables et un formulaire comme ceci :
Tblbenef
idbe Nom Prénom Genre Localité Piece_id civilite

Tblbons
idbo Nature

Tbldistrib
Iddis Date Nom Nature

La table tbldistrib est utilisée comme formulaire nommé formdistrib
A partir de ce formulaire, je voudrais pouvoir enlever toute valeur sélectionnée dans les deux listes déroulantes afin qu’à la sélection suivante on ne les voit plus.
Ceci me permettra d’imprimer les deux états cités-dessus
Ci-Joint la BDD

https://drive.google.com/file/d/1HPoCQ8UpM3h9DFmJXixiEAu_VOqb_Paq/view?usp=drive_open

1 réponse

yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 Ambassadeur 1 556
18 oct. 2019 à 18:38
bonjour, je suggère plutôt les champs suivants dans la table Tbldistrib :
Iddis Date idbe idbo

Nous ne pouvons pas faire l'exercice à ta place: qu'as-tu essayé, as-tu une question?
0
i_john Messages postés 9 Date d'inscription vendredi 18 octobre 2019 Statut Membre Dernière intervention 13 décembre 2019
19 oct. 2019 à 14:06
Bonjour et Merci yg_be.

j'ai changé les nom des champs de la table Tbldistrib comme suggérer et leux deux champs dans le formulaire Formdistrib fonctionnent comme je le souhaitais ; à savoir qu'après un choix dans l'un ou l'autre des champs la valeur sélectionnée ne peut plus l'être à nouveau à moins de procéder à une réinitialisation. Voila mes codes :

code pour la réinitialisation des 2 champs

Private Sub CommandReinitialiser_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "Update tblbenef Set tblbenef.x = False;"
DoCmd.RunSQL "Update tblbons Set tblbons.y = False;"
DoCmd.SetWarnings True

Me.Requery: Me.Refresh

End Sub


code pour le champ idbe

Private Sub idbe_AfterUpdate()
Dim strSQL As String

' mise à jour de la table tblbenef sélection
strSQL = "Update tblbenef Set x = true Where idbe = " & Me.idbe.Column(1) & ";"
CurrentDb.Execute strSQL, dbFailOnError

' rechargement de la liste avec les nouvelles valeurs
Me.idbe.RowSource = Me.idbe.RowSource

End Sub


Code pour le champ idbo

Private Sub idbo_AfterUpdate()
Dim strSQL As String

' mise à jour de la table tblbons après sélection
strSQL = "Update tblbons set y = True where idbo = " & Me.idbo.Column(2) & ""
CurrentDb.Execute strSQL, dbFailOnError

'rechargement de la liste avec les nouvelles valeurs
Me.idbo.RowSource = Me.idbo.RowSource
End Sub


Mon problème réside au niveau de l'état
Quand je le crée, je n'ai au maximum que 4 champs qui s'affiche avec leurs données ; les données de la table Tbldistrib alors que je voudrais que même des données des tables Tblbenef et Tblbons puissent aussi s'afficher sur l'état parce que je me dis qu'elles sont liées à la table Tbldistrib.
j'ai crée des champ indépendant dans l'état et tenté par exemple [idbo].[Column](2) mais rien
J'ai essayé de modifier la source de l'état en utilisant SQL tels :
Select from left join where ou Select from inner join where mais la aussi je bute
dans tous les cas, j'ai le résultat suivant : #Nom ?

Voila en gros mon problème. Si d'autres informations vous sont nécessaire je reste ouvert
https://accounts.google.com/ServiceLogin?service=wise&passive=1209600&continue=https://drive.google.com/open?id%3D1nLhRf0Nbcu4ltbSRwHNiw9d6d-1zSmja&followup=https://drive.google.com/open?id%3D1nLhRf0Nbcu4ltbSRwHNiw9d6d-1zSmja

A+
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > i_john Messages postés 9 Date d'inscription vendredi 18 octobre 2019 Statut Membre Dernière intervention 13 décembre 2019
19 oct. 2019 à 15:44
il est préférable de d'abord tester la requête hors de l'état.
n'hésite pas à être précis: tu ne partages pas la syntaxe de la requête, et tu n'expliques pas précisément le résultat que tu attends.
utiliser "x" et "y" comme nom de champ n'est vraiment pas une manière de clarifier la situation.
0
i_john Messages postés 9 Date d'inscription vendredi 18 octobre 2019 Statut Membre Dernière intervention 13 décembre 2019
19 oct. 2019 à 17:25
Ok avec le code ci-dessous j'ai une résultat ASSEZ bon mais qui ne convainc pas

SELECT *
FROM tblbenef LEFT JOIN tbldistrib ON tblbenef.idbe = tbldistrib.iddis;


Je m'explique :
j'aurai voulu que la requête puisse lier les tables Tblbenef et Tblbons à la table Tbldistrib. Mais cette dernière ne peut faire le lien qu'avec l'une ou l'autre des 2 tables.

Quand j'essaie de lier les tables Tblbenef et Tblbons à la table Tbldistrib avec le code ci-après

SELECT *
FROM (tblbenef LEFT JOIN tbldistrib ON tblbenef.idbe = tbldistrib.iddis) RIGHT JOIN tblbons ON tbldistrib.iddis = tblbons.idbo;


ce message apparaît : "instruction SQL non exécutée en raison de jointures externes ambiguës"
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > i_john Messages postés 9 Date d'inscription vendredi 18 octobre 2019 Statut Membre Dernière intervention 13 décembre 2019
19 oct. 2019 à 19:28
tu montres la syntaxe, il est utile aussi d'expliquer ce que tu veux obtenir.
commence pas faire des jointures simples, ou fais deux jointures de même sens (deux gauches ou deux droites).
0
i_john Messages postés 9 Date d'inscription vendredi 18 octobre 2019 Statut Membre Dernière intervention 13 décembre 2019
20 oct. 2019 à 00:09
Bonsoir,

Vous aviez parfaitement raison à propos de la structure même de la BDD.
J’ai d’abord revu toutes les relations entre les 3 tables à savoir tblbenef, tblbons et tbldistrib.
Les 2 premières tables sont tous liées à la table tbldistrib par les relations « un-à-plusieurs » par les champs idbe (clé primaire) de tblbenef à idbe de tbldistrib et idbo (clé primaire de tblbons à idbo de tbldistrib ; tous logés dans des champs de type numérique.

Ensuite avec vos conseils, j’ai le SQL suivant :

SELECT [Nom] & " " & [prenom] AS A, *
FROM tblbons INNER JOIN (tblbenef INNER JOIN tbldistrib ON tblbenef.idbe = tbldistrib.idbe) ON tblbons.idbo = tbldistrib.idbo;


Enfin, l’état est comme je le voulais. Il peut afficher les données souhaitées de toutes les tables.

https://docs.google.com/document/d/1Jee2OkHgLZNCIA-BA7fKZ_5M01ROmoZhTfqj8ycHatQ/edit?usp=drive_open&ouid=0

Merci de tout cœur pour votre patience

BDD:
https://drive.google.com/file/d/1cfl-RNTM17WZk7IR1HBN_hLqEkptKt0S/view?usp=drive_open
0