|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 52 ![]() |
Bonsoir,
Avant d'exposer ma requête, je tiens à vous informer que j'ai cherché longement dans plusieurs forums, mais hélas, aucune réponse je suis entrain de créer un formulaire dans lequel il y a les dates d'approbation d'une dizaine de membre (dans la même table), je cherche à rajouter un champ calculé pour déterminer la date prévue pour le lancement du produit, cette date n'est que le MAX des dates d'approbation de tous les membres (Max de 10 Champs) majoré de 15 jours. cependant, cette date ne sera calculée que si tous les dates d'approbation de tous les membres seront saisient. merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bonjour Mounamidou,
A priori, il me semble peu opportun d'effectuer une requete de regroupement sur un nombre de champs. Pour que la requête fonctionne simplement, il serait souhaitable que ces 10 champs soient regroupés dans une seule rubrique (mais avec 10 enregistrements maximum. Dans le cas contraire, le SQL risque d'être compliqué. La seule solution alternative sera d'utiliser les fonction IIF() Quelle est la structure de la table en entrée ? |
|
|
00
|
|
|
#3 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 52 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bonjour,
Je suppose que la table doit avoir la structure suivante (c'est pour cela que je demandais à connaitre sa structure): - produit - date1 - date2 - date3 - ... - date10 alors qu'une structure plus adaptée serait celle-ci : -produit -membre -data d'approbation Ce qui se traduirait en terme de donnée : produit1;membre1;date d'approbation produit1;membre2;date d'approbation produit1;membre3;date d'approbation ... produit1;membre10;date d'approbation Ceci dans la mesure ou tous les membre ont approuvé la date de lancement. L'avantage est multiple : - la requête est très simplifiée (on choisit le max en utilisant la fonction MAX du SQL qui est une fonction native de regroupement) - On peut déterminer immédiatement si tous les membres ont donné une date d'approbation (en utilisant la fonction COUNT). - De plus, le nombre de membres peut être variable, sans que la fonction SQL doivent être modifiée alors que dans le cas présent, il faut tester chaque colonne de manière indépendante, et en fonction des autres colonnes. ex : Code :
iif(<date1> nonvide,iif(<date2> nonvide,iif(<date3> nonvide,iif(...),max(date...)))) C'est une logique totalement différente de travailler en base de données par rapport au travail sous tableur, car sous tableur (Excel par ex.), les cellules peuvent être testées les unes par rapport aux autres dans n'importe que sens (horizontal comme vertical), ce qui ne peut pas être le cas quand on travaille sous base de données. new songs |
|
|
00
|
|
|
#5 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 52 ![]() |
Citation:
Citation:
Merci |
||
|
|
00
|
|
|
#6 | ||
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bonjour Mounamidou,
Quel est votre objectif au juste ? Garder la structure de la base de donnée existante( qui est peut-être un dérivé ou un lien sur une feuille Excel), ou concevoir une nouvelle base de donnée ? L'objectif est atteignable dans les 2 cas. Il me parait néanmoins plus pertinent de concevoir une base de donnée bien adaptée au départ, car la maintenance en sera grandement facilitée. En effet, il vaut mieux consacrer plus de temps à la conception que s'efforcer à "coller des rustines" après coup, ce qui, à chaque fois, occasionne de grandes difficultés à maintenir l'application. Si toutefois vous n'avez pas le choix de modifier la strucre de la BDD existante, il faudra passer par les fonction DAO et travailler au niveau du recordset (voici ici un tutoriel très bien fait) Quand vous aurez accédé au recordset souhaité, il faudra utiliser un algorithme de ce type (atention, le code n'est probablement pas exact, je le fais de tête sans tester) : Code :
|
||
|
|
00
|
|
|
#7 | |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 52 ![]() |
Citation:
Ma base de donnée n’est pas un dérivé ou un lien sur une feuille Excel. Mon soucis est de pouvoir par la suite effectuer des contrôle et éditer automatiquement (lancement automatique) un état des membres qui n’ont pas donné leurs approbations, à la date prévue « deadline » (que je désir calculé tout au début). |
|
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Dans ce cas, je préconise la deuxième option, qui passe d'abords par une définition exacte de vos besoin et des informations qui sont à votre disposition.
Au vu de cet état des lieux, il sera aisé de concevoir la structure des tables qui contiendront les informations. La conception des requêtes veidra ensuite Enfin, vous pourrez terminer par la conception des formulaires et des états. |
|
|
00
|
|
|
#9 | |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 52 ![]() |
Citation:
je vous explique l'objet de mon application. dans notre compagnie, pour le lancement d'un produit, il y a un comité constitué de 10 membres, chaque membre doit donner son approbation avant le lancement. les document concernant ce produit sont remis au comité à une certaine date (Submission date), ce comité à two weeks pour livrer son approbation ce qui implique un date limite (target deadline= Submission date +15). Après, chaque membre(x) donne son approbation à une date(x), et la date d'approbation du document c'est le Max des dates d'approbation de tous les membres. la détermination de cette date était l'objet de toute cette discution. je souhaite aussi pouvoir éditer automatiquement une lettre à chaque membre qui n'a pas livré son approbation une fois le deadline atteint. |
|
|
|
00
|
|
|
#10 |
|
Membre éprouvé
![]() Jean-Yves DUMASConsultant informatique Inscription : juin 2010 Messages : 325 ![]() |
Bonjour Mounamidou,
Au vu des informations, je vois au moins les tables suivantes à définir, comme vous l'aviez fort justement analysé dans votre post précédent: Tbl_membre Elle contient la liste des membres composant le comité : - identifiant du membre (Clé primaire) -Nom du membre -coordonnée téléphoniques et e-mail - date de présence (pour éviter de relancer un membre si celui-ci est absent et de bloquer l'approbation d'un produit) Tbl_produit: Elle contient les caractéristiques du produit à approuver : - identifiant du produit (Clé primaire) - Description du produit - pièces jointes événtuelles - Date de soumission Tbl_approbation Elle contient les actions du comité d'approbation : - identifiant du produit (Clé étrangère) - identifiant du membre (Clé étrangère) - date d'approbation émise par le membre sur ce produit - observations éventuelle La PK (primary key) de cette table étant la contaténation des 2 FK (Foreign Key) Bon courage et tenez-nous au courant sur le forum. NB : Il me paraitrait plus judicieux de délester ce topic sur le forum "modélisation". Je laisse bien sûr aux modérateurs le choix d'en décider A bientôt Jean-Yves |
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 52 ![]() |
Hi Jean
Merci Beaucoup pour vos conseilles et avis qui m'ont aidé à surmonter les diffucltés que j'ai rencontré lors de la conception de ma base de données. En effet, j'ai terminé ma BD et elle est fonctionnelle maintenant. ![]() Bonnes Fêtes de fin d'année à tous les internautes et plus spécialement aux administrateurs de ce Forum professionnel. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com