[Résolu] Créer un rapport issu de plusieurs tables&requêtes

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

[Résolu] Créer un rapport issu de plusieurs tables&requêtes

Message par Prismx »

Bonjour,

Pourriez vous m'orienter vers une solution technique qui correspondent aux besoins svp.

LE CONTEXTE
Je dois remplir quotidiennement la fiche de travail d'équipes de techniciens. Cette fiche doit contenir des données différentes comme les pointages des techs et les differents métrages effectués sur les differents types de produit et les differents clients.

Pour eviter d'avoir des tables trop massives j'ai créé plusieurs tables. une table technicien liée a une horaire par les noms. il y a aussi une table par client avec les reference de commande et le travail effectué.

L'OBJECTIF
je rentre les données 'horaire' et commande client mais je voudrais qu'ensuite ces données tombent automatiquement (ou presque) dans la fiche de trravail qui agrege ces information. Si les calculs de metrage pouvaient d'ailleurs etre calculée à la volée ca serait top.
j'aurais souhaiter placer en piece jointe ce a quoi doit ressembler la fiche de travail préexistante mais c'est un fichier .ods et ca ne passe pas.

LES ESSAIS
J'ai d'abord pensé faire un rapport mais je m'apercois qu'on peut y inserer que les donées d'une table ou d'une requete.
je ne sais pas creer de formulaire de consultation qui permettrait une meilleure mise en forme mais de toute façon n'aurais je pas le même probleme d'avoir plusieurs table et requete source ?
J'ai egalement créé une table 'fiche' mais c'est lourd et c'est compliqué d'avoir le resultat souhaité en terme de mise en forme. Pourtant une base de données 'fiche quotidienne' serait l'ideal puisque je pourrait interroger les données par periodes.
j'ai egalement essayer de transferer vers libreoffice calc grace à la portabilité des données (magique) mais ca n'est qu'une bequille.

MA DEMANDE
Pourriez vous apporter un regard exterieur au pb svp ?
Pièces jointes
Nouvelle base de données (copie).odb
(31.07 Kio) Téléchargé 181 fois
Dernière modification par Prismx le 21 nov. 2019 10:15, modifié 2 fois.
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25142
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Dude »

Salut,
Prismx a écrit :techniquement je bute
Cette phrase n'aide en rien à la compréhension.
Commence par nous faire une maquette (copie écran ou document) du résultat que tu souhaites obtenir.
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

Dude a écrit :Salut,
Prismx a écrit :techniquement je bute
Cette phrase n'aide en rien à la compréhension.
Commence par nous faire une maquette (copie écran ou document) du résultat que tu souhaites obtenir.
Bonjour
Voilà j'ai corrigé.
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »


La modération vous a écrit: :alerte: Merci de ne pas poster plusieurs messages à la suite !
Si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.

En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.

Salut.

Voila le document type.
Normalement on le rempli au stylo et je suppose que ca doit servir de formulaire de saisie pour le personnel qui étudie les chiffres.

Au tout début de mon projet j'avais fait un formulaire similaires à ce document mais ca me faisait une table a rallonge. J'ai plus de deux tables donc même un sous formulaire ca coincerait.
Pièces jointes
Screenshot_20191001-124835.jpg
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25142
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Dude »

Prismx a écrit :Voila le document type.
Et avec quelques explications, tu ne penses pas que ce serait mieux ? :?
Par exemple, où doivent être placés les champs de table.
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

Bonjour,
Après avoir téléchargé le fichier Base, je pense qu'il faut revoir la structure des Tables, au moins en y insérant un champ ID de Type INTEGER en Auto-valeur pour qu'il devienne la clé primaire.
Des Tables devraient plutôt contenir les ID des techniciens plutôt que leurs noms, quand il y a plusieurs techniciens, il faut une Table supplémentaire pour les détails, plutôt que 3 champs appelés TECH1, TECH2 ou TECH3.
En résumé, lorsqu'on utilise Calc, on a quelque chose qui ressemble à un état produit par le module Rapport, et non pas un modèle de Table de Base de données.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

Tout d'abord vraiment merci de vous pencher sur le projet.

Ce qui nous intéresse c'est de connaitre

_les horaires effectués par les techniciens.
_qui conduisait quel camion le jour j
_la nature du travail
les lettres correspondent a Dépose, Pose, Refection
On est sensé mettre un metrage correspondant ou le pourcentage du métrage effectué par le techniciens.
On a 3 catégories de produits : sécurité, solaire ou autres. Pour chaque produit on doit repeter l'opération D P R %.
_d'evaluer nos techniciens en continue pour leur montée en compétences et leur évolution.

La table gamma est la table spécifique pour un de nos client. Jusque là il n'y a que de la matière 'securité' mais ça peut évoluer. Le champ 'gamma' est le numéro de commande, suivent les dimensions.
Pour nos clients réguliers je compte faire des tables identiques.
Ce que je souhaiterais c'est que les dimensions se transforment en métrage en m² et que la somme des métrage du jour arrive dans le bon champ de la table fiche.
Si le client n'est pas un régulier je mettrai un champs 'commande' dans la table 'fiche' et je rentrerai le DPR% Directement dans la table fiche.

Dans l'absolu il me faudrait donc les tables :
Fiche qui recevrait les données de horaires, camion, clients regulier.

Évidemment les tables vont devoir être liées par des relations. Le nom du tech et le numéro de fiches au minimum je pense.

Il serait peut-être judicieux de rajouter les champs relatifs à l'évaluation dans la table horaire.
La BDD que j'ai transmise n'est encore qu'une esquisse elle est vouée à évoluer.

Mon idée c'est que je rentre les pointages des tech, leur camion et leur évaluation.
Ensuite je fait le compte rendu à mon client avec les dimensions du travail effectué.

Et comme par magie ces données s'assemblent pour créer une seule fiche dans la table 'fiche'

Quid de la transformation à la volée entre dimensions et métrage entre les tables client et fiches.

J'espère avoir apporté plus de clarté
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

Prismx a écrit :La table gamma est la table spécifique pour un de nos client.
Dans une Base de données, on ne crée pas une Table par client, comme on le ferait dans Calc avec une Feuille par client.
Ici, il te faut une Table de tous tes clients, une Table pour les commandes et, s'il y a plusieurs produits pour une commande, une Table du détail de la commande.
S'il y a plusieurs techniciens pour effectuer le travail, il faudra une Table pour les détails, et non pas des champs TECH1, etc ...
Prismx a écrit :_les horaires effectués par les techniciens.
_qui conduisait quel camion le jour j
_la nature du travail
Ces éléments seront calculés dans des Requêtes.
Pièces jointes
Base_techniciens.odb
Création de Tables et d'une Requête.
(32.03 Kio) Téléchargé 172 fois
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

jeanmimi a écrit :il faut revoir la structure des Tables, au moins en y insérant un champ ID de Type INTEGER en Auto-valeur pour qu'il devienne la clé primaire.
Tout à fait d'accord, j'avais mis une clé primaire manuelle juste le temps de me familiariser avec la liaison de table. Effectivement c'est à revoir.
jeanmimi a écrit :Bonjour,
Des Tables devraient plutôt contenir les ID des techniciens plutôt que leurs noms, quand il y a plusieurs techniciens, il faut une Table supplémentaire pour les détails, plutôt que 3 champs appelés TECH1, TECH2 ou TECH3.
oui c'est vrai, mais je vais devoir connaitre le numero de chaque tech pour les saisie ou bien il y a une astuce ?
merci
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

Prismx a écrit :oui c'est vrai, mais je vais devoir connaitre le numero de chaque tech pour les saisie ou bien il y a une astuce ?
Dans ce cas, tu peux remplacer le contrôle Texte du Formulaire par un contrôle Zone de liste qui affichera ce que tu veux (code, numéro, nom, nom+prénom) mais stockera dans la Table l'ID du technicien. Lorsque tu feras ensuite ta requête, tu relieras cette Table avec celle des Techniciens par leurs ID_TECH.

Si tu penses que tu auras d'autres questions que la question initiale pour développer ta Base, il pourrait être plus simple de déplacer le sujet dans la section Projets du forum.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

jeanmimi a écrit : Dans une Base de données, on ne crée pas une Table par client, comme on le ferait dans Calc avec une Feuille par client.
Ici, il te faut une Table de tous tes clients, une Table pour les commandes et, s'il y a plusieurs produits pour une commande, une Table du détail de la commande.
S'il y a plusieurs techniciens pour effectuer le travail, il faudra une Table pour les détails, et non pas des champs TECH1, etc ...
Bonjour Jeanmimi, merci pour l'eclaircissement. :bravo: :idea:
voila shema de la nouvelle stucture pour les differentes tables et leurs liens.
Scan04102019120456.pdf
(231.68 Kio) Téléchargé 172 fois
Aussi le 'rapport'_résultat que ces tables pourrait fournir assez simplement.
vous validez ?
Scan04102019120646.pdf
(187.81 Kio) Téléchargé 164 fois
jeanmimi a écrit : Ces éléments seront calculés dans des Requêtes.
Ce travail preparatoire effectué reste à determiner comment effectuer les requêtes sur ces tables et les réassembler dans la fiche de travail.
Vous parliez de requetes avec les calculs. Ensuite une commande SQL va inserer les resultat dans une table FICHE ?
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

Le schéma relationnel ne va pas être optimal tel qu'il est défini.
Pourquoi ?
Parce que les ID doivent être reliés entre eux. Par exemple, la Table Commandes doit comporter un champ ID_Commande de Type INTEGER en AutoValeur, un champ Date et un champ ID_Client; ce dernier doit être aussi de Type INTEGER (saisie obligatoire : non) afin de pouvoir entrer en relation avec un ID_Client de Type INTEGER en AutoValeur d'une Table_Clients.
Il en sera de même pour un champ ID_Commande la Table Détail commandes.
Idem pour les autres Tables où il faut modifier :
Table Production : ID_Commande, ID_Tech
Table DRH : ID_Tech, ID_Camion
Un Champ de Type INTEGER doit être relié à un autre champ de Type INTEGER.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

jeanmimi a écrit :Le schéma relationnel ne va pas être optimal tel qu'il est défini.

Un Champ de Type INTEGER doit être relié à un autre champ de Type INTEGER.

ok merci de ta precieuse aide. J'ai bien compris que pour puiser une reference dans une table source celle ci doit etre en INTEGER auto et etre toujours en iNTEGER mais pas auto dans la table qui recoit cette donnée.
Je vois bien qu'avec cette methode ça sera plus facile pour faire une formulaire de saisie avec des listes déroulantes.

j'ai bien refait toute les tables de la base de donnée dans ce sens et j'ai mis en place les relations.
Nouvelle base de données.odb
j'essaierai dès que possible de faire une formulaire de saisie.

Si cette fois la base est bonne j'avoue etre tres curieux de la suite : la fiche ca va etre une requête sur une nouvelle base ? une vue ? un formulaire de requête ? un rapport.
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

J'ai testé ta nouvelle Base.
Il y avait une erreur dans le Table new_detail_commandes où la clé primaire n'était pas en Auto-valeur.
J'ai créé un formulaire pour saisir des commandes et des détails de commandes. Ça fonctionne.
J'ai créé une requête pour afficher les commandes et leurs détails. Ça fonctionne.
J'ai créé un Rapport sur cette Requête. Ça fonctionne.

Il te reste à faire la même chose pour les fiches de chantier.
Pièces jointes
Base_techniciens_v2.odb
(64.58 Kio) Téléchargé 193 fois
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

super ! merci Jeanmimi, :super: :bravo:

C'est vrai que des requêtes sur plusieurs tables bien optimisées ça ouvre des possibilités auquelles je n'avais pas pensé.
Du coup le rapport est beaucoups plus complet.

je vais essayer de
_digerer ça pour finaliser les requêtes.
_apprendre comment on fait un rapport sur requête
_essayer de faire le rapport 'fiche de travail' complet

je reviens avec un essai.:arrow:
encore Merci et bon weekend.
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

bonsoir Jeanmimi,

Je suis desolé mais je n'ai pas reussi à faire une liste dans le formulaire comme tu l'as fais pour les matières dans le formulaire de commande.
j'ai essyé pour le champ id_tech pour la table new_rh. Pourtant les champs sont bien liés en INTEGER 1 pour plusieurs.
J'ai essayé de 'remplacer par : zone de liste'. j'ai aussi essayé de dissocier le champ crée par l'assistant de formulaire et remplacer par une zone de liste. dans l'assistant 'controle' >'données'>type de contenu>liste de valeurs mais la liste reste vide.
:?
tu saurais me dire ce qui cloche stp ?

sinon le cheminement de saisie est bien pensé :
_ d'abord le client et commande
je pensais enchainer avec
_rh
puis productivité.

ensuite j'aurais fais ma fiche en deux rapports : d'abord le volet rh puis la requete new_detail_commande mixée avec productivité via le champ commande.
merci encore
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

Prismx a écrit :j'ai aussi essayé de dissocier le champ crée par l'assistant de formulaire et remplacer par une zone de liste
C'est la méthode que j'utilise.
Prismx a écrit :dans l'assistant 'controle' >'données'>type de contenu>liste de valeurs mais la liste reste vide.
Ce n'est pas Liste de valeurs, mais SQL, c'est pourquoi dans mon exemple tu peux lire une ligne de Code SQL.
En cherchant dans le forum, tu vas trouvez des exemples illustrés.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

Bonjour à tous,

j'ai fais des pas de géant grace aux conseils de Jeanmimi. j'etais tellement content que j'avais installé libreoffice 6.3.2 et je pensais terminer le projet ce matin et poster le resultat final ici.

Mais ce midi Patratra j'ai un blocage que je ne comprends pas
Capture du 2019-10-14 14-37-56.png
j'avais fais mes tables avec des liens entre elles pour pouvoir faire des zone de liste dans les formulaires.
en rentrant des données je me suis dit que je pourrais encore optimiser en créant une table date qui relierait les champs date des table RH, detail_commande et _productivité. ca me permetrait de faire LA Requête. J'ai donc modifié un champ du formulaire, créé une table _date et rajouté une champ INTEGER dans ma table RH.

Mais le formulaire refuse de trouver ma table. j'ai fais plein de test different : il n'en veut pas de ma table. :fou:

je suis repassé a libreoffice 6.2.7 sans plus de resultat.

un dernier coup de main pour finir svp ?
Pièces jointes
fiche_de_travail (copie).odb
(66.86 Kio) Téléchargé 137 fois
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

Prismx a écrit :une table _date et rajouté une champ INTEGER dans ma table RH
Est-ce le résultat attendu ?
Pièces jointes
fiche_de_travail (copie_2).odb
(67.02 Kio) Téléchargé 124 fois
Date en SQL.jpg
Date en SQL.jpg (7.93 Kio) Consulté 4830 fois
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

jeanmimi a écrit :
Prismx a écrit :une table _date et rajouté une champ INTEGER dans ma table RH
Est-ce le résultat attendu ?
Bonjour et Merci,


Effectivement c'est bien ce que je souhaitais faire. Je vois bien que le soucis était dans la requête sql dans l'assistant de creation de la zone de liste. Pourtant je ne comprends pas pourquoi ça a fonctionné avant et plus après quand j'ai commencé a recevoir le message " impossible de déterminer le contenu de la zone combinée / zone de liste. :tesfou:
mais bref.

Mauvaise syntaxe :
Capture du 2019-10-14 17-17-07.png
Bonne syntaxe :
Capture du 2019-10-14 17-19-04.png

Merci beaucoups.
Dès que ca marche j'envoie pour solder le sujet
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

Bonsoir,

Depuis le dernier message j'ai decouvert que le bouton avec trois petits points à droite de la zone de saisie SQL pour les zones de liste permettent d'avoir un mode ebauche pour avoir la bonne syntaxe. :roll:

Je voudrais revenir sur les requêtes sur plusieurs table (theme d'origine du sujet :lol: )
je ne sais pas par quel bout attaquer le noeud du probleme donc je vais poser plusieurs question plus simples.

_Quand je mets plusieurs tables dans les requetes ca me demultiplie le nombre de resultats avec des doublons. c'est ma requête qui serait mal effectuée ? est ce que ca viendrait de types de relation 'interne, gauche, droite ...' ? dois-je utiliser cette fonction ?.

_Dans le mode ebauche de requête je vois un menu fonctions avec la Fx Somme. or je voudrais justement faire des somme de resultats mais ca m'affiche une erreur.
Capture du 2019-10-16 22-57-59.png
comment pourrais-je faire le somme des surfaces effecuées pour une commande à un jour donné. et à la fin la somme des surfaces de toutes les commandes.
plus compliqué faire la somme des mettrages en fonction de la matière et du type d'action ?
il faudrait faire autant de reqûetes successive !? :?



En naviguant sur le forum je pense avoir trouvé une partie de la réponse. Il faudrait faire des somme dans le rapport en faisant des groupements puis des calcul dessus


https://forum.openoffice.org/fr/forum/v ... 61#p206345

https://wiki.openoffice.org/wiki/FR/FAQ ... _de_calcul

La construction correcte de la requête reste a faire.
Dans le sujet sité je vois dans la requete des LEFT ([table_client...]) Sur des jonctions interne.
Il y aurait donc bien un travail a faire sur les jointure gauche/ droite. Mais je n'ai pas encore la compréhension de la technique.



enfin comment fait t'on dans les regles de l'art une requête sur plusieurs table ?

Quand j'aurais affiché la total des metrages effectué pour une commande pour un jour J ; comment faire apparaitre les techniciens qui ont partipé et à quel pourcentage ?

Dans ma base ca reviendrait a mettre en relation les tables new_detail_commande et new_productivité. elle meme en relation avec des tables Date et tech.
peut etre que ma base et mes tables ne sont pas concues de facon obtimales c'est fort possible mais la question est quand meme interessante sur l'art et la maniere de faire des requetes sur plusieurs tables mise en relation.

encore une fois merci de votre aide. Je cherche aussi de mon coté mais c'est moins efficace.
Pièces jointes
191016 (copie).odb
(79.83 Kio) Téléchargé 170 fois
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

Dans la Table new_detail_commandes2,
je n'ai pas compris l'utilité du champ date
Que vient-il faire dans cette table ?
J'ai fait un calcul dans une requête, mais je ne suis pas sûr que c'est ce que tu cherches.
Pièces jointes
Calcul dans une requête.jpg
191016 (copie_2).odb
(80.66 Kio) Téléchargé 136 fois
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

Bonjour Jeanmimi,

Merci de ta réponse.
j'ai bien bossé depuis ton dernier passage.
J'ai bien intégré cette methode de calcul. Par contre effectivement je cherche une methode pour faire le total des métrés. donc le total d'une colonne.
j'ai vu que c'etait posible de le faire dans le rapport.

je diverge mais dans la mesure ou ca fonctionnne sans je n'ai pas compris à quoi servent les champs GROUPE et SOMME dans le mode ebauche de ta requete ?
Capture du 2019-10-22 17-02-22.png
Par contre J'ai bien compris comment on fait une requête sur plusieurs table. En Fait c'est la reciproque de ce qu'on avait fait pour le formulaire. coté formulaires ca permettait d'avoir la bonne etiquette sur un champs inclu dans une relation ; côté requête ca permet de mettre en relation des champs de plusieurs table via un champ commun. L'erreur que j'avais fait c'est de vouloir creer une requete melangeant des champs qui n'avaient un peu rien a voir et ca me créait des doublons.

j'espere ne pas etre trop loin du compte en disant que je devrais faire une requete et un rapport pour la partie RH et un autre requete & rapport pour 'la partie detail_commande ?
D'une part coté RH les horaires et les critères d'évaluation avec juste les pourcentages de production effectués par le technicien dans son equipe. D'autres part côté production : le responsable, les references et sous reference commande, matieres, les métrés dans le " DPR".

J'ai relu les premieres tables que tu avais envoyé et je suis retombé sur ta requete pour le detail de commande. c'etait une super idée de mettre un metrage directement dans un champ "DPR" independant ca permet a la fois d'avoir les dimensions de la piece posée et en pus d'avoir le metrage deja calculé avec l'action. < :super:

Capture du 2019-10-22 17-20-48.png
J'ai rajouté un champ 'date' dans l'espoir de garder une relation entre la partie RH et la Partie PRODUCTION_detail_commande. j'avais pensé egalement à un numero de fiche mais c'est moins clair
Mon objectif de depart c'etait de faire une fiche de travail unique.

Je suis dans le juste en disant que ca va etre difficile de reunir les deux requêtes sur un seul rapport ?
est il possible de reunir deux rapports sur un document unique ? quitte a avoir deux pages tant pis
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

Prismx a écrit :Je suis dans le juste en disant que ca va etre difficile de reunir les deux requêtes sur un seul rapport ?
Il faut faire une requête de requête.
Prismx a écrit :est il possible de reunir deux rapports sur un document unique ? quitte a avoir deux pages tant pis
Non il n'est possible que d'avoir un seul rapport, car une seule source est connectable.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

Bonsoir Jeanmimi.

Je joins une base bien épurée et plus ordonnée.

.J'ai maintenant une vision assez claire du rapport final. ca devrait ressembler à ca :

en tete : date responsable
detail : technicien camion horaires DPR MAT 1 ; DPR MAT 2 ; DPR mat 3


Dans la table RH je pense noter seulement pour le responsable la somme des métrages relevé dans les zones D P R de la table detail_production et pour les techniciens simplement les pourcentages de production.




le responsable etant aussi un technicien il aurait bien les totaux de metrage par matiere dans son D P R et seul les responsables seraient en relation avec la table detail_production.
les techniciens eux n'aurait qu'un pourcentage dans leur zone DPR qui serait saisi dans la partie RH du formulaire.

Par contre dans la Requete_production le 03/10/19 j'ai deux lignes qui ne s'ajoutent pas, je n'ai pas encore pu creuser.


Pour finir il ne resterait plus que l'erreur de calcul du 30/10/19
creer un champ TOTAL qui aditionnerait tout les metages du jour
creer le rapport

qu'en penses tu stp ? merci
Pièces jointes
on_touche_au_but (copie).odb
(7.49 Kio) Téléchargé 147 fois
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

Prismx a écrit :Dans la table RH je pense noter seulement pour le responsable la somme des métrages relevé
Tout ce qui est calculé devrait être plutôt dans une Requête : somme des métrés, temps de travail journalier, etc.
La Base avec une idée de Rapport.
Pièces jointes
on_touche_au_but_v2.odb
(14.01 Kio) Téléchargé 152 fois
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par Prismx »

Bonjour,

Je viens poster mon resultat. C'est grosso modo le résultat que j'avais en tête en commençant ce projet de fiche de travail.
v1 tapissier peintre plaquiste nettoyage.odb
(114.65 Kio) Téléchargé 121 fois
:!: Les derniers details à regler :

_Requete sur tables jointes n'affiche pas les resultats avec critères vides :
Dans la requete 'Requete_fiche_rh' si je ne joins pas la table camion tous les resultat s'affichent bien mais je n'ai que l'id_camion sans l'immat.
si je joins la table camion dans la requete pour avoir l'immat, elle ne me retourne que les resultats avec la presence de camion. Donc je n'ai plus les entrées des techs qui ne conduisent pas.

_calcul de durée
sur les conseils de jeanmimi et en toute logique j'ai voulu faire une requête qui me calcule la difference entre mes timestamp. Comme d'autres personne sur le forum je m'attendais a faire ( timestamp 4 - timestamp 1)-(timestamp3 - timestamp 2).
De toute evidence il faut utiliser DATEDIFF. :aie:
Sauf que vraiment avec la meilleure volonté je ne comprends ni comment l'utiliser ni la logique de la requete. et si il faut la taper en SQL comment la reintegrer dans l'ensemble de la 'requete_fiche_rh'.

_copie des points au lieu de virgule pour decimales
Pour satisfaire un client je lui copie-colle le resutat de la requete '2_req_somme_prod_rapport client' dans libreoffice calc. Bizarrement dans la colonne 'métrage' calc mets des points au lieu de virgule pour les décimales. c'est pas grave mais c'est bizarre.



Dans la mesure oû le projet fonctionnne pas mal je ne sais pas trop si je dois clore le sujet Resolu ou si on termine ici ?
Du coup c'est un peu comme demander alors qu'on a déjà la main dans le pot de bonbons. 8)
Mageia 7
libre office 6.2.8.2-1.mga7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Créer un 'rapport' issu de plusieurs tables et requêtes

Message par jeanmimi »

DATEDIFF se paramètre comme ça :

Code : Tout sélectionner

DATEDIFF('HOUR', "debut_dej","arrivee")
ce qui va te donner le nombre d'heures d'écart.
Et comme les heures sont restées en multiples de 12, il faut les traduire en minutes.
Puis additionner les minutes récupérées aussi par DATEDIFF.
Les calculs seront à refaire pour chaque plage horaire.
 Ajout : Voir une ébauche de requête DATEDIFF dans la Base :
v2 tapissier peintre plaquiste nettoyage.odb
(115.34 Kio) Téléchargé 105 fois
 
 Ajout : Le code suivant donne aussi un résultat intéressant :

Code : Tout sélectionner

SELECT "id_rh", "arrivee", "debut_dej", TO_CHAR( CAST ( '00:' || DATEDIFF( 'mi', "arrivee", "debut_dej" ) || ':00' AS "TIME" ), 'HH:MI' ) AS "Durée" FROM "fiche_rh"
 
Dernière modification par jeanmimi le 22 nov. 2019 18:30, modifié 1 fois.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Prismx
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 28 août 2019 19:28

[Résolu] Créer un rapport issu de plusieurs tables et requê

Message par Prismx »

Bonsoir et merci pout ta réponse.

CONCAT est très interessant.
Ta methode de calcul de durée fonctionne parfaitement avec DATEDIFF ET MINUTE ().

Juste pour le sport je me demandais si la fonction DATEDIFF (mi, date1, date2) ne pouvait pas tout directement convertir en minute ?

Je suis tombé sur ce message sur le forum :

Syntaxe SQL a écrit:
DATEDIFF(chaîne, dateheure1, dateheure2)
retourne le nombre d'unités de temps écoulée entre 'dateheure1' et 'dateheure2'.
'chaîne' indique l'unité de temps et peux avoir les valeurs suivantes :
'ms'='millisecond' (millisecondes), 'ss'='second' (secondes),'mi'='minute' (minute),'hh'='hour' (heure), 'dd'='day' (jour), 'mm'='month' (mois), 'yy' = 'year' (année).
Les deux formes courte et longue de 'chaîne' peuvent être utilisées.

MAJ du lendemain :
J'ai essayé et ça fonctionne : DATEDIFF( 'MI', "arrivee", "depart" ) / 60

Merci à Jeanmimi et toute l'équipe.
Mageia 7
libre office 6.2.8.2-1.mga7
Verrouillé