Champs complété selon des résultats d'autres champs

maguenard Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
maguenard Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'aimerais savoir comment faire afin de mettre la valeur dans un champs d'une table selon les informations contenus dans un champs dans une autre table.
Ex: Le champs à compléter est le champs ETAT de la table CHANTIER. Les valeurs du champs ETAT sont les suivant:
OUVERT, si le champs VOLUME de la table SUIVI_HEBDO EST VIDE
EN COURS, si le champs VOLUME de la table SUIVI_HEBDO contient des données.

merci de me répondre
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
En général, il est fortement déconseillé de faire comme tu l'envisages.
Au lieu d'avoir un champ ETAT dans la table CHANTIER, je suggère, quand tu as besoin de connaitre l'état du chantier, d'aller chercher la valeur de VOLUME dans la table SUIVI_HEBDO.
As-tu une raison particulière de ne pas faire comme je suggère?
0
maguenard Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
L'utilisateur de la base de donnée veut que la valeur du champs ETAT se génère automatiquement selon des valeurs de d'autres champs.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Au lieu de laisser l'utilisateur aller consulter les tables de la base, tu pourrais lui afficher les informations via des requêtes. Et les requêtes pourraient automatiquement combiner la table CHANTIER avec la table SUIVI_HEBDO, sans que l'utilisateur sache de quelle table vient chaque information.
0
maguenard Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Il n'a pas besoin de consulter les tables, c'est lui qui saisie l'information dans différents formulaires et il veux connaître l'évolution des chantiers grâce au champs ETAT.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Tu cherches un moyen d'avoir dans la table CHANTIER un champ ETAT, automatiquement mis à jour en fonction de la table SUIVI_HEBDO.
Je suggère une autre approche : ne pas avoir de champ ETAT, et, chaque fois que tu souhaites utiliser ou afficher ETAT, l'évaluer en fonction de la table SUIVI_HEBDO.
Pour l'utilisateur, le résultat sera le même.
0
maguenard Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne comprend, est ce que tu aurais un exemple, merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Si tu partages ton fichier, je peux faire un exemple dedans.
0
maguenard Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je suis nouveau sur ce forum, comment on partage
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
Pour donner un exemple, j'ai modifié la requête RRapport_Hebdo, pour calculer Etat en fonction de TSuivi_Récolte.Vol_SEP:
SELECT DISTINCT TChantier.Nom_prop, TChantier.No_chantier, TSuivi_Récolte.Traitement, TSuivi_Récolte.Vol_SEP, TSuivi_Récolte.Vol_MEL_SCIE, TSuivi_Récolte.Vol_PET_SCIE, TSuivi_Récolte.Vol_PET_PATE, TSuivi_Récolte.Vol_BOP_SCIE, TSuivi_Récolte.Vol_CHAUFFAGE, TSuivi_Récolte.Date_, TSuivi_Récolte.Entrepreneur, TPlanification.[Taux ent SEP], TPlanification.[Taux ent MEL SCIE], TPlanification.[Taux ent PET SCIE], TPlanification.[Taux ent PET PATE], TPlanification.[Taux ent BOP SCIE], TPlanification.[Taux ent CHAUFFAGE],
iif(TSuivi_Récolte.Vol_SEP=0,"OUVERT","EN COURS") as Etat
FROM TChantier INNER JOIN (TPlanification LEFT JOIN TSuivi_Récolte ON (TPlanification.Traitement = TSuivi_Récolte.Traitement) AND (TPlanification.No_chantier = TSuivi_Récolte.No_chantier)) ON TChantier.No_chantier = TPlanification.No_chantier
GROUP BY TChantier.Nom_prop, TChantier.No_chantier, TSuivi_Récolte.Traitement, TSuivi_Récolte.Vol_SEP, TSuivi_Récolte.Vol_MEL_SCIE, TSuivi_Récolte.Vol_PET_SCIE, TSuivi_Récolte.Vol_PET_PATE, TSuivi_Récolte.Vol_BOP_SCIE, TSuivi_Récolte.Vol_CHAUFFAGE, TSuivi_Récolte.Date_, TSuivi_Récolte.Entrepreneur, TPlanification.[Taux ent SEP], TPlanification.[Taux ent MEL SCIE], TPlanification.[Taux ent PET SCIE], TPlanification.[Taux ent PET PATE], TPlanification.[Taux ent BOP SCIE], TPlanification.[Taux ent CHAUFFAGE]
HAVING (((TSuivi_Récolte.Date_)=[Écrire la période (ex: 16 au 22 octobre 2016)]));

C'est cela que tu cherchais?
0
maguenard Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Tu semble seulement avoir ajouter cette ligne dans le code SQL iif(TSuivi_Récolte.Vol_SEP=0,"OUVERT","EN COURS") as Etat
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Exactement, c'est dans le but d'ajouter ETAT, comme demandé.
0
maguenard Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
merci! je vais essayer ça
0