[Résolu] Placer résultat de calcul dans un champ de table
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.
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.
[Résolu] Placer résultat de calcul dans un champ de table
Bonjour,
J'utilise OOo Base v4.1.5 sous Windows 10
J'avance doucement dans la réalisation d'un projet sous Base qui permettra le plus simplement possible d'établir un classement de sportifs inscrits à une compétition.
Actuellement j'utilise Calc. Mais je trouve le fonctionnement trop lourd, en particulier pour éditer les résultats.
Une table "Partants" contient nom, prénom, date de naissance, ... est constituée à partir d'une feuille Excel contenant les informations saisies dans un formulaire d'inscription en ligne.
Je souhaite incorporer dans la table "Partants" l'âge déterminé, le jour de l'épreuve, à partir de la date de naissance. Cette donnée doit me permettre ensuite d'attribuer un bonus temps en fonction de l'âge.
Le calcul de l'âge ne me pose pas de problème à partir d'une requête : SELECT "DateNaissance", "Nom", YEAR( NOW( ) ) - YEAR( "DateNaissance" ) - CASE WHEN ( MONTH( NOW( ) ) < MONTH( "DateNaissance" ) OR ( MONTH( NOW( ) ) = MONTH( "DateNaissance" ) AND DAY( NOW( ) ) < DAY( "DateNaissance" ) ) ) THEN 1 ELSE 0 END AS "Age" FROM "Partants"
cependant je n'arrive pas à charger "Age" dans la table "Partants"
De la même façon j'aurai ensuite à calculer le temps compensé (temps relevé - bonus lié à l'âge) et le placer dans la table "Partants"
Si quelqu'un peut m'aider, je l'en remercie par avance.
J'utilise OOo Base v4.1.5 sous Windows 10
J'avance doucement dans la réalisation d'un projet sous Base qui permettra le plus simplement possible d'établir un classement de sportifs inscrits à une compétition.
Actuellement j'utilise Calc. Mais je trouve le fonctionnement trop lourd, en particulier pour éditer les résultats.
Une table "Partants" contient nom, prénom, date de naissance, ... est constituée à partir d'une feuille Excel contenant les informations saisies dans un formulaire d'inscription en ligne.
Je souhaite incorporer dans la table "Partants" l'âge déterminé, le jour de l'épreuve, à partir de la date de naissance. Cette donnée doit me permettre ensuite d'attribuer un bonus temps en fonction de l'âge.
Le calcul de l'âge ne me pose pas de problème à partir d'une requête : SELECT "DateNaissance", "Nom", YEAR( NOW( ) ) - YEAR( "DateNaissance" ) - CASE WHEN ( MONTH( NOW( ) ) < MONTH( "DateNaissance" ) OR ( MONTH( NOW( ) ) = MONTH( "DateNaissance" ) AND DAY( NOW( ) ) < DAY( "DateNaissance" ) ) ) THEN 1 ELSE 0 END AS "Age" FROM "Partants"
cependant je n'arrive pas à charger "Age" dans la table "Partants"
De la même façon j'aurai ensuite à calculer le temps compensé (temps relevé - bonus lié à l'âge) et le placer dans la table "Partants"
Si quelqu'un peut m'aider, je l'en remercie par avance.
AOpenOffice 4.1.6
Windows 10
Windows 10
Re: Placer le résultat d'un calcul dans un champ d'une table
Bonjour et bienvenue sur le forum,
Accès direct à votre signature
Cordialement.
Dans votre signature il y a écrit : OpenOffice 4.1.3
Windows 10
Merci de mettre à jour votre signature.[b][color=#404080]Momisas[/color][/b] a écrit :J'utilise OOo Base v4.1.5 sous Windows 10
Accès direct à votre signature
Cordialement.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Re: Placer le résultat d'un calcul dans un champ d'une table
Bonjour,
En joignant votre fichier dépersonnalisé ou un exemple de fichier au format ODF, vous facilitez la tâche des personnes qui vont vous aider.
Comment joindre un fichier
Comment dépersonnaliser un document
Cordialement
En joignant votre fichier dépersonnalisé ou un exemple de fichier au format ODF, vous facilitez la tâche des personnes qui vont vous aider.
Comment joindre un fichier
Comment dépersonnaliser un document
Cordialement
AOO 4.1.15 et LibO stable 7.6.6 / macOS Intel 13.6.6 Ventura
Adoptium-temurinJDK-jre_1.8.0_402 / Firefox/Safari/Thunderbird /Time Machine+cloneCCC
Tutoriels du forum pour macOS
Pour sauvegarder vos documents c'est ceinture ET bretelles
Adoptium-temurinJDK-jre_1.8.0_402 / Firefox/Safari/Thunderbird /Time Machine+cloneCCC
Tutoriels du forum pour macOS
Pour sauvegarder vos documents c'est ceinture ET bretelles
- Dude
- IdOOle de la suite
- Messages : 25145
- Inscription : 03 mars 2006 08:45
- Localisation : 127.0.0.1
- Contact :
Re: Placer le résultat d'un calcul dans un champ d'une table
De toute façon, on ne stocke pas de champ calculé dans une table.
Au pis, on crée une vue qui permet de connecter le formulaire ou le rapport dessus.
Un partant peut participer à plusieurs épreuves.
Il faudrait donc créer une table "Epreuve" qui stocke cette information.
Au pis, on crée une vue qui permet de connecter le formulaire ou le rapport dessus.
De mon avis : le modèle relationnel est faux.Momisas a écrit :Je souhaite incorporer dans la table "Partants" l'âge déterminé, le jour de l'épreuve
Un partant peut participer à plusieurs épreuves.
Il faudrait donc créer une table "Epreuve" qui stocke cette information.
- jeanmimi
- Grand Maître de l'OOffice
- Messages : 16955
- Inscription : 03 mars 2006 17:02
- Localisation : Venise verte
Re: Placer le résultat d'un calcul dans un champ d'une table
Bonjour,
Une Table ne devrait contenir que les éléments qui sont fixes (identité, date de naissance), ou qui changent rarement (ex adresse) puisqu'une Table de Base de données n'est pas une feuille de Tableur.
Avec Base, ce type de renseignement est soit dans une requête, soit dans une Vue, soit dans un Rapport.Momisas a écrit :De la même façon j'aurai ensuite à calculer le temps compensé (temps relevé - bonus lié à l'âge) et le placer dans la table "Partants"
Une Table ne devrait contenir que les éléments qui sont fixes (identité, date de naissance), ou qui changent rarement (ex adresse) puisqu'une Table de Base de données n'est pas une feuille de Tableur.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Re: Placer le résultat d'un calcul dans un champ d'une table
Bonjour Dude
Merci pour la réponse
Ok effectivement je peux créer une table "Epreuve" mais comment charger dans cette table "Age" (calculé à partir de la date de naissance qui se trouve dans "Partants")
Et si je comprends bien, je vais devoir créer une table "Chrono" pour charger le temps calculé à partir des données chrono saisies au moment de l'épreuve et du bonus déterminé à partir de "Age"
Merci pour la réponse
Ok effectivement je peux créer une table "Epreuve" mais comment charger dans cette table "Age" (calculé à partir de la date de naissance qui se trouve dans "Partants")
Et si je comprends bien, je vais devoir créer une table "Chrono" pour charger le temps calculé à partir des données chrono saisies au moment de l'épreuve et du bonus déterminé à partir de "Age"
AOpenOffice 4.1.6
Windows 10
Windows 10
Re: Placer le résultat d'un calcul dans un champ d'une table
La modération vous a écrit: 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.
Bonjour Jeanmimi,
Merci pour la réponse
Est-ce que ça veut dire que je ne peux pas mémoriser un champ résultat d'un calcul ?
AOpenOffice 4.1.6
Windows 10
Windows 10
Re: Placer le résultat d'un calcul dans un champ d'une table
Bonjour
Quelque chose du genreLa date en dur, est la date de l'épreuve.
Mais sans savoir comment sont organisées tes données, difficile de te répondre plus précisément.
A+
Non, c'est possible avec une instruction UPDATE de l'outil SQL.Momisas a écrit :Est-ce que ça veut dire que je ne peux pas mémoriser un champ résultat d'un calcul ?
Quelque chose du genre
Code : Tout sélectionner
UPDATE "tConcurrentsEpreuve"
SET "AgeEpreuve" = (SELECT CASEWHEN( MONTH( '1999-12-02' ) < MONTH( "DateNaiss" ), CAST( ( YEAR( '1999-12-02' ) - YEAR( "DateNaiss" ) - 1 ) AS "INT" ), CASEWHEN( MONTH( '1999-12-02' ) > MONTH( "DateNaiss" ), CAST( ( YEAR( '1999-12-02' ) - YEAR( "DateNaiss" ) ) AS "INT" ), CASEWHEN( DAY( '1999-12-02' ) >= DAY( "DateNaiss" ), CAST( ( YEAR( '1999-12-02' ) - YEAR( "DateNaiss" ) ) AS "INT" ), CAST( ( YEAR( '1999-12-02' ) - YEAR( "DateNaiss" ) - 1 ) AS "INT" ) ) ) ) "AgeEpreuve" FROM "tConcurrentsEpreuve", "tadherents" WHERE "tConcurrentsEpreuve"."refConcurent" = "tadherents"."IdAd")
Mais sans savoir comment sont organisées tes données, difficile de te répondre plus précisément.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Re: Placer le résultat d'un calcul dans un champ d'une table
Bonjour et merci Piaf
Ouf ! Pas simple
je crois que je ne suis pas prêt pour utiliser correctement SQL
je vais devoir bosser dur
Ouf ! Pas simple
je crois que je ne suis pas prêt pour utiliser correctement SQL
je vais devoir bosser dur
AOpenOffice 4.1.6
Windows 10
Windows 10
Re: Placer le résultat d'un calcul dans un champ d'une table
Re
Un petit exemple Pour tester, Menu Outils > SQL... dans la fenêtre Instruction à exécuter tu collespuis tu cliques sur Exécuter. A+
Un petit exemple Pour tester, Menu Outils > SQL... dans la fenêtre Instruction à exécuter tu colles
Code : Tout sélectionner
UPDATE "tEpreuveConcurrent"
SET "AgeEpreuve" = (SELECT CASEWHEN( MONTH( '1999-12-02' ) < MONTH( "dteNaiss" ), CAST( ( YEAR( '1999-12-02' ) - YEAR( "dteNaiss" ) - 1 ) AS "INT" ), CASEWHEN( MONTH( '1999-12-02' ) > MONTH( "dteNaiss" ), CAST( ( YEAR( '1999-12-02' ) - YEAR( "dteNaiss" ) ) AS "INT" ), CASEWHEN( DAY( '1999-12-02' ) >= DAY( "dteNaiss" ), CAST( ( YEAR( '1999-12-02' ) - YEAR( "dteNaiss" ) ) AS "INT" ), CAST( ( YEAR( '1999-12-02' ) - YEAR( "dteNaiss" ) - 1 ) AS "INT" ) ) ) ) FROM "tConcurrents" WHERE "tEpreuveConcurrent"."refConcurrent" = "tConcurrents"."IdConcurrent")
- Pièces jointes
-
- Momisas.odb
- (4.73 Kio) Téléchargé 132 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Re: Placer le résultat d'un calcul dans un champ d'une table
A Monsieur le modérateur je souhaiterais dire:
1- mes 2 réponses du 1/2 à Dude et Jeanmimi ont été faites pour les remercier de m'avoir répondu. Effectivement j'aurais dû répondre aux 2 dans le même message.
2- je sais parfaitement que pour recevoir il faut savoir donner, mais dans le cas présent je découvre Base et Sql et je suis bien incapable, pour l'instant, de proposer des solutions à qui que ce soit.
A Piaf
Mille mercis pour l'exemple que je vais m'empresser de consulter.
2 petites questions : existe-t-il une documentation Sql pour AOO (avec toutes les commandes utilisables) ?
Quelle est la commande Sql pour AOO équivalente à TIME_TO_SEC () et SEC_TO_TIME () par exemple ?
Par avance merci et désolé pour le dérangement.
PS: j'ai été programmeur système sur Univac 1108 et 1180 pendant de nombreuses années. J'utilisais l'assembleur Sleuth, le Fortran, Cobol, Perl, Basic, HTML, ... mais franchement je comprends difficilement la logique du SQL que l'on doit utiliser avec AOO Base
1- mes 2 réponses du 1/2 à Dude et Jeanmimi ont été faites pour les remercier de m'avoir répondu. Effectivement j'aurais dû répondre aux 2 dans le même message.
2- je sais parfaitement que pour recevoir il faut savoir donner, mais dans le cas présent je découvre Base et Sql et je suis bien incapable, pour l'instant, de proposer des solutions à qui que ce soit.
A Piaf
Mille mercis pour l'exemple que je vais m'empresser de consulter.
2 petites questions : existe-t-il une documentation Sql pour AOO (avec toutes les commandes utilisables) ?
Quelle est la commande Sql pour AOO équivalente à TIME_TO_SEC () et SEC_TO_TIME () par exemple ?
Par avance merci et désolé pour le dérangement.
PS: j'ai été programmeur système sur Univac 1108 et 1180 pendant de nombreuses années. J'utilisais l'assembleur Sleuth, le Fortran, Cobol, Perl, Basic, HTML, ... mais franchement je comprends difficilement la logique du SQL que l'on doit utiliser avec AOO Base
AOpenOffice 4.1.6
Windows 10
Windows 10
- jeanmimi
- Grand Maître de l'OOffice
- Messages : 16955
- Inscription : 03 mars 2006 17:02
- Localisation : Venise verte
Re: Placer le résultat d'un calcul dans un champ d'une table
Oui, la traduction française du guide HSQLDB est ici :Momisas a écrit :existe-t-il une documentation Sql pour AOO (avec toutes les commandes utilisables
https://wiki.openoffice.org/wiki/FR/Doc ... h09#SELECT
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Re: Placer le résultat d'un calcul dans un champ d'une table
Merci Jeanmimi, je vais potasser la question
AOpenOffice 4.1.6
Windows 10
Windows 10