[Résolu] Nombre de champs d'un formulaire en fonction d'une table

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.
nat925
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 14 juil. 2023 18:14

[Résolu] Nombre de champs d'un formulaire en fonction d'une table

Message par nat925 »

Salut :)
alors le sujet de mon message est surement très mal formulé car j'ai du mal à l'expliquer de manière concise et c'est pourquoi j'ai aussi eu du mal à trouver une solution à mon problème lors de mes recherches ! :roll:
Alors je vais y aller par étapes !

Mon objectif :
Créer une base de donnée pour noter des heures des salariés de deux entités d'une entreprise.
Je veux que ce soit simple et pouvoir ensuite faire des requêtes pour avoir le temps de travail de chacun à la fin du mois, le temps de travail dans chaque entité, le nombre d'heures sur l'année, etc.
Chaque jour, en ouvrant le formulaire de notation d'heures du jour, je veux avoir à marquer l'heure de début et de fin de journée et le nombre d'heure affecté à la deuxième entité de l'entreprise, et ce pour chaque salarié présent.

Au passage, je signale que dans ma jeunesse je m'en sortais bien avec l'informatique mais que j'ai désormais pris un tout autre chemin professionnel et n'ai plus trop (du tout :lol: ) le temps de me plonger à corps perdu dans l'apprentissage de nouveaux langages de programmation comme le BASIC. Je m'en sors avec du php / mysql, mais ça reste de la bidouille ! De part ces bases là que j'aie, j'imagine peut être que certaines choses sont faisables sur Open Office Base alors que ça n'a rien à voir...

Ma stratégie :
J'ai pour l'instant créé trois tables :
- Salariés, avec comme champs ID (autoincrement), Nom, Prenom, Type (cdd, cdi, ...) et Affichage (comme il y a souvent des changements de salariés, qui ne sont pas présents à l'année, ce champ boléen me permet d'afficher ou pas le salarié dans le formulaire de notation des heures, et ne pas en avoir 100 alors que 10 sont présents)
- Dates, avec comme champ ID (autoincrement) et Date (format Date)
- Heures, avec comme champ Salarié (lié à ID salarié), Date (lié à ID date), les heures de debut et fin (format heure), et le nombre d'heures travaillées sur chaque entité.

En gros, sur le formulaire, chaque jour je veux que :
- Une entrée se crée dans la table Date
- Seuls les salariés avec le champ "affichage" activé sont affichés et pour chacun je note des heures
- Je valide et ça me crée une entrée par salarié dans la table Heure, où les heures travaillées par entité seront calculées par une fonction ? Macro ?

Où j'en suis :
- J'ai créé les tables
- J'ai créé mon formulaire de gestion des salariés
- Je suis à la création du formulaire de notation des heures. J'ai le champ date en haut (pour mettre la date du jour : clic sur liste déroulante / aujourd'hui, les autres solutions avaient l'air complexes), mais il s'agit maintenant d'afficher les champs à remplir pour chaque salarié à afficher.

D'où ma question !
En php j'aurais fais ça facilement avec une boucle while après avoir sélectionné les salariés avec Where affichage = true, mais bon on est pas en php et je ne vois vraiment pas comment m'en sortir...
Peut-on rendre un formulaire "dynamique" sous OpenOffice Base, ou bien n'est ce pas conçu pour cela ?

Je vous remercie pour votre patience et votre aide :)
Bonne soirée !
Nat
Dernière modification par nat925 le 24 juil. 2023 19:59, modifié 1 fois.
Open office 4.1.14
Windows 7
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par pulcinopio »

Bonsoir Monsieur,

Avant d'aborder le sujet, permettez-moi de vous inviter à consulter le fil suivant viewtopic.php?t=66261 .

En ce qui concerne le décompte des heures, si vous voulez mon avis, moi je distribuerais à chaque employé une fiche calendrier. A moins que chacun d'entre eux puisse avoir accès au formulaire, mais c'est une autre paire de manches.

A+

pulcinopio
Libre Office 6.0.4 sur Ubuntu 18.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par jeanmimi »

Bonjour,
nat925 a écrit : 14 juil. 2023 18:44 Je suis à la création du formulaire de notation des heures.
Il faut donc une Table Tables_horaires (ou une Vue d'une requête puisque les salariés vont être filtrés sur le critère de présence) qui permettra d'enregistrer l'ID du Salarié pour une date avec le début et la fin de son activité.
nat925 a écrit : 14 juil. 2023 18:44 nombre d'heures travaillées sur chaque entité.
Comme l'heure de début et l'heure de fin sont saisies, à quoi va servir de saisir en plus la durée ?
La relation entre les Tables pourrait avoir cet aspect :
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
nat925
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 14 juil. 2023 18:14

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par nat925 »

Merci à tous les deux pour vos réponses !

pulcinopio
Les salariés peuvent noter leurs heures à leur guise et nous on les note de notre côté, ensuite c'est le comptable qui fait les fiches de paies. Depuis des années c'était fait sur excel mais là c'est devenu le bordel, les copiés collés chaque mois ça va deux minutes... :D

jeanmimi
D'accord ! Et depuis cette vue de requête je pourrai ensuite faire le formulaire c'est ça ? Super :super:

Le but est que les deux entreprises paient au groupement d'employeurs en fonction de la quantité de travail effectué, et le groupement d'employeurs paie le salaire pour la globalité des heures effectuées.
Je pensais donc avoir un champ où on note par exemple que dans la journée le salarié a fait 3h sur la deuxième structure (pas une science exacte), et au moment de l'enregistrement de l'entrée dans la table Heures, un calcul pour l'entreprise A est fait (heure fin - heure début - heures dans l'entreprise B) et pour le champ de l'entreprise B c'est juste ce qui a été rempli dans le formulaire. Et comme ça on garde une trace des horaires de début et fin en cas de désaccord avec un salarié, et non pas seulement un nombre d'heures travaillées... :wink:

Pour la date j'avais créé une table Dates car pour chaque date il y avait plusieurs entrées (une par salarié) dans la table Heures, mais effectivement je me suis peut être compliqué la vie je peux ensuite faire une requête pour trouver toutes les entrées correspondant à la date...
Open office 4.1.14
Windows 7
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par jeanmimi »

nat925 a écrit : 14 juil. 2023 20:14 Et depuis cette vue de requête je pourrai ensuite faire le formulaire c'est ça ?
La saisie des présents se fait dans un formulaire pour renseigner une Table_Presence et une Table_Detail_Presences.
Formulaire saisie des présents.png
La requête va afficher le résultat de cette saisie (filtrable sur la date choisie) et pourra être transformée en Vue.
Requête pour afficher les présents.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
nat925
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 14 juil. 2023 18:14

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par nat925 »

Je regarde ça de près, je retravaille mon projet et je reviens avec une bonne nouvelle j'espère 😉
Merci beaucoup pour ton aide en tout cas !
À très vite
Open office 4.1.14
Windows 7
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par pulcinopio »

Très Cher Monsieur,

Vous avez écrit:
pulcinopio
Les salariés peuvent noter leurs heures à leur guise et nous on les note de notre côté, ensuite c'est le comptable qui fait les fiches de paies. Depuis des années c'était fait sur excel mais là c'est devenu le bordel, les copiés collés chaque mois ça va deux minutes...
Je n'ai pas la prétention de péter plus haut que mon posterieur...mais ayez l'amabilité de saisir le croquis.

Slts
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office 6.0.4 sur Ubuntu 18.04
nat925
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 14 juil. 2023 18:14

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par nat925 »

Bonjour à tous les deux,
pulcinopio a écrit : 14 juil. 2023 21:14

Je n'ai pas la prétention de péter plus haut que mon posterieur...mais ayez l'amabilité de saisir le croquis.

Slts
J'ai bien compris le croquis mais il ne s'agit pas du tout de ce que je veux faire. Je ne veux pas calculer des salaires mais des nombres d'heures travaillées, et même, le problème n'est pas là.
jeanmimi a écrit : 14 juil. 2023 20:46 La saisie des présents se fait dans un formulaire pour renseigner une Table_Presence et une Table_Detail_Presence

La requête va afficher le résultat de cette saisie (filtrable sur la date choisie) et pourra être transformée en Vue.
Je note qui est présent en effet depuis un formulaire, celui de la gestion des salariés : je ne veux pas noter chaque jour qui est présent, juste choisir qui j'affiche dans mon tableau de notation d'heure (un CDI sera toujours noté présent, un saisonnier le sera que sur la période où il sera là, puis je décoche la case et il n'apparait plus dans le formulaire où je note les heures chaque jour. S'il revient un jour, je n'ai qu'à recocher la case dans le formulaire de gestion des salariés).

J'ai créé une vue comme tu me le conseillais, qui me sélectionne les salariés actuellement présents. Mais comme les heures du jour ne sont pas encore enregistrées, il n'y a pas d'entrées dans la table "Heures" qui me permette d'afficher quoi que ce soit à la date du jour... Ce qu'il faudrait que je réussisse à faire :
1/ j'ouvre le formulaire de notation d'heure
2/ avec la barre de navigation je crée un nouvel enregistrement dans la table "date", avec la date du jour (ça c'est bon)
3/ il faudrait que j'ai ensuite un bouton, ou je ne sais quoi, qui lors de la création de l'entrée dans la table Date me crée une entrée par salarié présent (en utilisant la vue créé précédemment ?). Cette entrée serait vide. On utilise ensuite une vue qui sélectionne les entrées qui viennent d'être créées (salarié présent ET date du jour), on les affiche dans le formulaire et je n'ai plus qu'à les remplir !
Est ce réalisable ? Si oui, est ce qu'il est possible de faire une requête SQL soit lors du clic sur un bouton, soit automatiquement lors de la création de l'entrée du jour dans la table "Date", qui permette de créer une entrée par salarié présent ?

En espérant ne pas être complètement à côté de la plaque :roll:

Bonne journée :)
Open office 4.1.14
Windows 7
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par pulcinopio »

Bien le bonjour, nat.

Je tâcherai d'étudier tes propos.

Je te prie de m'accorder ce qu'il faut pour y réfléchir.

Bien à toi

pulcinopio

Post Scriptum: voici ce que je te propose:

Code : Tout sélectionner

SELECT "ID_journalier", "début", "fin", HOUR( "fin" ) - HOUR( "début" ) AS "décompte" FROM "Journalier"
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office 6.0.4 sur Ubuntu 18.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par jeanmimi »

nat925 a écrit : 15 juil. 2023 05:25 3/ il faudrait que j'ai ensuite un bouton, ou je ne sais quoi, qui lors de la création de l'entrée dans la table Date me crée une entrée par salarié présent (en utilisant la vue créé précédemment ?). Cette entrée serait vide.
Dans le formulaire ci-dessous, à gauche dans le MainForm, j'affiche les salariés présents, cochés comme tels dans le formulaire de gestions des salariés, puis sélectionnés dans une requête et à droite dans le SubForm les horaires à noter pour chacun d'entre eux. J'ai utilisé un contrôle Grille, mais ce n'est pas le mieux adapté, car j'aurais dû afficher plutôt des contrôles individuels.
Je n'ai pas affiché la date, parce que je n'ai pas trouvé la façon la plus efficace de le faire, mais j'ai lu que tu as résolu cette question.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
nat925
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 14 juil. 2023 18:14

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par nat925 »

Bonsoir,
super, on avance ! :) Je te remercie vivement pour le temps que tu me consacres !
jeanmimi a écrit : 15 juil. 2023 19:38 Dans le formulaire ci-dessous, à gauche dans le MainForm, j'affiche les salariés présents, cochés comme tels dans le formulaire de gestions des salariés, puis sélectionnés dans une requête et à droite dans le SubForm les horaires à noter pour chacun d'entre eux. J'ai utilisé un contrôle Grille, mais ce n'est pas le mieux adapté, car j'aurais dû afficher plutôt des contrôles individuels.
Je n'ai pas affiché la date, parce que je n'ai pas trouvé la façon la plus efficace de le faire, mais j'ai lu que tu as résolu cette question.
Me basant sur ce que tu as fait, j'ai fait un mainform où je selectionne la date du jour (liste déroulante).
Il y a ensuite un subform avec les salariés dont la case affichage est sélectionnée (requête préalable) qui s'affiche sous forme de grille. [par contre il n'y a pas de lien entre ce formulaire et le principal, car le principal concerne la date, et celui ci les salariés...]
De là, j'ai rajouté un deuxième subform qui permet de remplir les heures de la journée, par salarié, à chaque fois que l'on en choisi un dans la grille du précédent subform. [ce subform a lui bien un lien avec le précédent]

Cependant, je n'arrive pas à faire de lien entre le deuxième subform et le mainform : il est pourtant nécessaire que je connaisse la date sélectionnée dans le premier formulaire pour pouvoir enregistrer les heures du jour avec le bon id de journée !

J'ai essayé en ne faisant que un mainform avec la date et un subform où tous mes champs étaient affichés, y compris la date. Là, j'avais bien un lien entre le mainform et le subform. Problème : comme les entrées ne sont pas créées automatiquement (même vides) dans la table des heures travaillées, soit ça ne m'affiche rien (nouvelle journée), soit ça m'affiche uniquement les entrées tests que j'ai ajoutées manuellement (journées précédentes). Et si je veux rajouter des entrées (donc des heures par salarié par jour) il faut que je fasse tout manuellement, je n'ai pas de salarié proposé. Bref pas top.

-> Les deux seules solutions que je voie sont que soit je puisse faire d'une manière ou d'une autre un lien entre le deuxième subform et la date du mainform (par exemple en disant que le champ date du subform = champ date du mainform, est ce possible ?), soit si je mets tout en un seul subform, il faut que les entrées soient créées automatiquement pour chaque salarié présent à chaque fois que je crée une nouvelle journée dans le mainform.
pulcinopio a écrit : 15 juil. 2023 05:52 Post Scriptum: voici ce que je te propose:

Code : Tout sélectionner

SELECT "ID_journalier", "début", "fin", HOUR( "fin" ) - HOUR( "début" ) AS "décompte" FROM "Journalier"
Je n'en suis pas encore au stade de faire les calculs de nombre d'heures, mais je me demandais justement comment j'allais procéder, tu m'apportes la réponse en avance ! Merci :wink:

La nuit me portera peut être conseil ! :super:
Open office 4.1.14
Windows 7
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par pulcinopio »

"Aide-toi et le Ciel t'aidera"

Salut nat,

Que penses-tu de ce propos:

1. Formulaire à composter
2. Formulaire historique

liés par un "déviateur" dont je transcris le code: (Switch en anglais dans le texte.

Code : Tout sélectionner

sub OpenForm1
const sNewDocumentName="Ta fiche"
oNewFormDocument=ThisDatabaseDocument.FormDocuments.getbyname(sNewDocumentName).open
end sub
Porte-toi bien

pulcinopio
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par pulcinopio le 21 juil. 2023 11:33, modifié 1 fois.
Libre Office 6.0.4 sur Ubuntu 18.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par jeanmimi »

J'arrive à saisir les dates de travail avec les notations des horaires pour chaque salarié présent.
Reste plus qu'à tester.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
nat925
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 14 juil. 2023 18:14

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par nat925 »

Bonjour à tous les deux,
Je n'ai pas eu le temps de m'occuper de tout cela dans la semaine, d'où mon absence de réponse... je me repenche sur le problème actuellement !

Pour préciser ce que je veux, voici une capture d'écran :
oobase.png
Alors vous allez vous dire que je suis chiant, que si j'avais fait dans un autre sens ça aurait été plus simple, et vous avez raison ! :D
Mais tant qu'à prendre le temps de mettre en place la base de donnée, j'essaie de la faire telle qu'elle puisse être optimale pour mon utilisation, à savoir :
- le soir j'ouvre le formulaire, je clique nouvelle journée et renseigne la date du jour, je valide (touche entrée ou bouton que je rajouterai) et la date est créée dans la table "Date"
- Les salariés présents actuellement dans l'entreprise sont affichés (table "Salaries" avec champ "affichage" true)
- Pour chacun je clique dessus et renseigne les heures.

Une date, plusieurs salariés, plusieurs horaires.

J'aurais pu dans la table "Heures" mettre la date du jour au champ "Date" plutôt qu'une relation avec la table "Date" (et donc supprimer cette table) puis faire un filtre quand j'ai besoin de voir une date en particulier mais j'aurais donc dû noter la date pour chaque salarié, ça peut paraître un détail mais quand il y en a 15 ou 20 à faire chaque soir... :roll:

Pour en revenir à la capture d'écran :
Le premier formulaire "Date" n'est pas lié aux suivants, car je ne peux pas relier le deuxième formulaire au premier (aucun rapport entre des salariés et des dates, sauf au sein de la table "Heures" qui ne vient qu'au troisième formulaire.
Dans la capture d'écran on voit que j'ai sélectionné la date qui a un ID de 6, mais l'entrée de la table "Heures" affichée reste celle liée à la date ID 4. Comme il n'y a aucune entrée dans la table Heures pour la date ID 6, logiquement (enfin c'est l'objectif) on aurait dû me proposer de créer l'entrée. Et si je voulais modifier une entrée existante il aurait fallu là aussi que ce soit lié.
Pour l'instant ça ne m'affiche que les heures de la date ID 4 car c'est la première date enregistrée lors des tests.

Il faut donc que j'arrive à lier dans le formulaire le champ ID du premier formulaire et le champ date du troisième formulaire
Mais c'est manifestement impossible car il y a un formulaire entre eux...
Une solution ? :?

Autre possibilité : utiliser une macro qui copie colle la valeur du premier champ vers le le second ?
Je pense notamment à ce sujet : viewtopic.php?p=311509
J'ai essayé de l'ajouter en modifiant les noms des champs et des formulaires, mais je n'y connais rien en macro, ça ne marche pas... Et même, est ce que en collant dans le champ "Date" du troisième formulaire l'ID du premier ça suffirait à l'actualiser pour que l'on soit à l'entrée de la bonne journée, et non que l'on modifie la date de l'entrée actuelle ?
(C'était un aparté macro, si ma solution se situe dans une macro et que je n'y arrive pas je publierai un nouveau sujet dans la catégorie macro, merci à la modération que j'ai vu assez intransigeante là dessus dans d'autres topics de le comprendre :oops: )

Lorsque j'aurai réussi, les champs ID et Date de la table heure, non encadrés mais faisant partie du formulaire 3 seront mis en non visibles.

Je suis ouvert à toute solution qui me permette de suivre mon schéma d'utilisation date > salarié > heures, même s'il faut que je remette en cause toute mon organisation relationnelle entre les tables, mais j'ai beau réfléchir je ne vois pas ...

Bonne soirée :)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open office 4.1.14
Windows 7
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par pulcinopio »

Salut,

Merci de poster les relations de ton modèle relationnel.

Loin de moi de te dire que tu donnes l'impression de tourner autour du pot.

A+

pulcinopio
Libre Office 6.0.4 sur Ubuntu 18.04
nat925
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 14 juil. 2023 18:14

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par nat925 »

Bonjour,
tourner autour du pot, je ne crois pas, tourner en rond c'est certain :roll:
oobaseschemarelationnel.png
A bientôt,
Nat

Edit :
En regardant mon scheéma relationnel droit dans les yeux, j'ai peut être eu une idée (pas dans les règles de l'art mais bon...)
Je pourrais éventuellement créer un champ "Date_temporaire" dans la table "Salariés" et le lier au champ "ID" de la table "Date", le but serait de faire la transition entre le formulaire 1 et le formulaire 3...
- Je crée une nouvelle journée ou en sélectionne une (formulaire 1)
- Ça m'affiche les salariés présents (formulaire 2), je lie les formulaires 1 et 2 par le champ "Date_temporaire" (en écrivant je me dis qu'en fait c'est peut être pas réalisable, je me suis emballé pour rien)
- Je note les heures, en liant le formulaire 3 au formulaire 2 par les champs "Date_temporaire" et "Date"

Je tente dans la journée mais je ne suis pas confiant :lol:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open office 4.1.14
Windows 7
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par pulcinopio »

Bonjour Nat,

Tu as écrit:
Le premier formulaire "Date" n'est pas lié aux suivants, car je ne peux pas relier le deuxième formulaire au premier (aucun rapport entre des salariés et des dates, sauf au sein de la table "Heures" qui ne vient qu'au troisième formulaire.
Dans la capture d'écran on voit que j'ai sélectionné la date qui a un ID de 6, mais l'entrée de la table "Heures" affichée reste celle liée à la date ID 4. Comme il n'y a aucune entrée dans la table Heures pour la date ID 6, logiquement (enfin c'est l'objectif) on aurait dû me proposer de créer l'entrée. Et si je voulais modifier une entrée existante il aurait fallu là aussi que ce soit lié.
Pour l'instant ça ne m'affiche que les heures de la date ID 4 car c'est la première date enregistrée lors des tests.
Merci pour ton avant-propos, qui a retenu toute mon attention.

A juste titre tu t'es référé à la normalisation et je crois que cela est bon. Mais alors pourquoi t'enduire en erreur au premier contour? les tables dates et heures sont incongrues.En ce qui concerne le champ ID, ce-dernier doit être impérativement INTEGER et non pas DATE.

Le format Date/Heure peut se sélectionner au moment de la création du champ.

Dernière question: aurais-tu par hasard l'intention de rédiger un roman feuilleton?

Bien à toi

pulcinopio :fou:
Libre Office 6.0.4 sur Ubuntu 18.04
nat925
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 14 juil. 2023 18:14

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par nat925 »

Les champs ID ainsi que les champs de la table "Heures" liés aux ID des autres tables (Date et Salarie) sont effectivement déjà de type Integer.

Je n'aurai pas le temps de rédiger de roman, c'est vrai que je donne pas mal de détails dans mes messages mais c'est pour essayer de ne pas vous perdre : quand on est pas soi-même confronté au problème, que l'on a pas créé la base de donnée, ça demande déjà de la concentration pour s'en imprégner. Vous avez surement bien d'autres choses à faire dans votre vie que de m'aider sur ce problème, c'est pourquoi j'essaye d'être le plus détaillé possible pour vous faire gagner du temps... :wink:

Edit :
Pour mon idée de rajouter un champ Date_temporaire, cela ne marche pas : en liant le formulaire 2 au 1 par ce champ, ça ne m'affiche dans la grille SEULEMENT les salariés ayant le champ Date_temporaire égal à l'ID de la date, à savoir... aucun ! Or j'aurais voulu que ça me les affiche TOUS, et que ça remplisse automatiquement le champ Date_temporaire. Bref, cette fonctionnalité n'est pas faite pour ça...
Open office 4.1.14
Windows 7
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par pulcinopio »

Cher Monsieur Nat (cela vient-il de Nat King Cole?)

Les membres du forum vous ont offert plusieures solutions. Je n'ai pas eu la possibilité de voir votre fichier Odb et, franchement, je ne comprends toujours pas où vous voulez en venir.

Slts

pulcinopio
Dernière modification par pulcinopio le 24 juil. 2023 10:51, modifié 1 fois.
Libre Office 6.0.4 sur Ubuntu 18.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par jeanmimi »

nat925 a écrit : 23 juil. 2023 08:05 tourner autour du pot, je ne crois pas, tourner en rond c'est certain :roll:
Le schéma relationnel qui fonctionne est celui qui relie la requête des personnes présentes dans l'effectif actuel, afin de n'afficher que celles-ci dans le formulaire MainForm, aux notations des horaires pour la date sélectionnée pour chacune des personnes de l'effectif actuel.
Vouloir partir de la Date pour afficher ensuite les personnes de l'effectif actuel dans un sous-formulaire, puis dans un autre sous-formulaire les notations des horaires, ne fonctionne pas ou, du moins, je ne suis pas arrivé comme toi à le faire fonctionner.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
nat925
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 14 juil. 2023 18:14

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par nat925 »

Bonjour Jeanmimi,
Bon, je vais devoir déclarer forfait alors ! Je vais surement me tourner vers un autre système que par la base de donnée OO, quitte à me faire une page web à usage interne à l'entreprise, en php et MySQL j'arriverai à faire exactement ce que je veux et sans soucis :)
Je vous remercie tous les deux pour votre aide, je laisse le sujet ouvert quelques jours au cas où quelqu'un aurait une idée puis je le fermerai ;)
Nat
Open office 4.1.14
Windows 7
HRk2o
Membre cOOnverti
Membre cOOnverti
Messages : 366
Inscription : 29 mai 2009 08:51
Localisation : Guyane

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par HRk2o »

Bjr ,
je vous lis depuis le début et j'en viens à penser qu'il faut voir autrement la solution de la saisie des données des salariés de l'entité B quotidiennement, sous les conditions suivantes ;
je suppose que vous reprenez la présence des sal.B à partir d'une liste ; sous quelle forme et type ? Tableau, texte, pdf ; papier, numérique ?
S'agit-il seulement de reprendre dans la base les données la présence des sal.B (1) ou prevoyez-vous plus large ultérieurement (2) ?
les plages horaires de travail sont-elles normalisées (1)ou au gré de chaque salarié (2) ?
les salariés changent-ils d'entité au cours de l'année ?

De mon point de vue, la base de présences se présenterait comme-ci :
Sans nom 1.ods
Vous disposez de tous les salariés A+B, sous réserve du contrôle des nouveaux salariés, de nouvelle plage horaire, de changement d'entité salarié dans votre base, la méthode est la suivante :
Etape1
Ouvrir le document journalier de présence des sal.B sous forme tableau ;
Insérer une col. Refsalarie avant le nom du salarié, répéter pour refhoraire ;
Ajouter les ID correspondants ;
Dans une nouvelle feuille du tableau, copier et coller les colonnes idoines à la table PRESENCE de la base.
Insérer une col ID en 1re entête de ligne et la laisser vide ;
Après vous êtes assurés de l'exactitude des données, Copier tout ce tableau destiné à être Coller dans la table PRESENCE de la base.

Etape2
Ouvrir la base ;
Sélectionner T_PRESENCE et Coller ;
la suite = Ajouter données et appariement des champs
un message d'erreur s'affichera si incohérence des ID d'où erreurs de préparation en amont.

Pour terminer si vous allez dans ce sens, il serait mieux d'orienter votre projet vers la section Projet plus adaptée à diverses solutions notamment macros.

@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Windows 10 sous AOO 4.1.16 et LibO 24.8.5.2
nat925
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 14 juil. 2023 18:14

Re: Nombre de champs d'un formulaire en fonction d'une table

Message par nat925 »

Bonsoir,
Merci pour ton message, c'est super d'essayer de donner un coup de main malgré mon forfait !

Pour les entités, en fait les salariés travaillent dans les deux entités, reliées entre elles par un groupement d'employeur (pour légaliser le tout, en cas d'accident etc). Les horaires sont différents tous les jours, les salariés varient toutes les semaines (arrivées, départs, absences...).
L'entité principale est la A, c'est pourquoi je voulais noter les heures (arrivées, départ) pour un calcul automatique des heures travaillées sur la A. Ensuite, si ce jour là le salarié a aussi (ou totalement) travaillé sur l'entité B, je note les heures effectuées ("dont 3h" par exemple) et ça m'aurait fait une soustraction.

J'ai continué à réfléchir cet après midi à tout ça et j'en suis désormais convaincu, c'est pas sur openoffice base que j'arriverai à faire ce que je veux. Je ne connais pas assez bien le logiciel (et je ne dispose pas du temps nécessaire pour me lancer dans l'apprentissage par tutoriels complets) et j'arriverai mieux à faire ce que je veux en html / php / mysql. Par exemple un truc tout bête : pour une nouvelle journée, que l'on me pré-remplisse les horaires travaillés avec ceux qui ont été effectués la veille. Comme les journées se ressemblent, si je peux n'avoir qu'un quart d'heure à changer avant de valider, je gagnerai du temps ! Peut être aurais-je pu le réaliser sur OObase mais au prix de combien d'heures de réflexion...

Je clos donc le sujet pour ne plus faire perdre de temps à personne, et vous remercie tous une dernière fois :wink:
Nat
Open office 4.1.14
Windows 7