[Résolu] dernière modification dans une 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] dernière modification dans une table
Bonjour,
Existerait il un champ caché où serait enregistré la date de la dernière modification de la ligne ?
Sinon, il faudra que je le crée.
Cordialement, merci
Existerait il un champ caché où serait enregistré la date de la dernière modification de la ligne ?
Sinon, il faudra que je le crée.
Cordialement, merci
Dernière modification par micmac le 05 avr. 2021 23:44, modifié 3 fois.
Raison : Ajout de la coche verte
Raison : Ajout de la coche verte
Libreoffice 6.4.7.2 sous Debian 10 Buster
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
Re: dernière modification dans une table
Merci, c'est bien pour une table.
Ok pour le format TIMESTAMP, que je peux remplir à la saisie d'un formulaire qui modifie la table (fonction NOW() peut être).
Y a t'il une astuce pour mettre à jour ce champ lors d'une modif directement dans la table ?
Ca a l'air possible pour une table externe, mais on est encore sur une table intégrée :
https://alvinalexander.com/blog/post/jdbc/specify-default-date-time-with-hsqldb-timestamp/
Ok pour le format TIMESTAMP, que je peux remplir à la saisie d'un formulaire qui modifie la table (fonction NOW() peut être).
Y a t'il une astuce pour mettre à jour ce champ lors d'une modif directement dans la table ?
Ca a l'air possible pour une table externe, mais on est encore sur une table intégrée :
https://alvinalexander.com/blog/post/jdbc/specify-default-date-time-with-hsqldb-timestamp/
Libreoffice 6.4.7.2 sous Debian 10 Buster
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
- Dude
- IdOOle de la suite
- Messages : 25145
- Inscription : 03 mars 2006 08:45
- Localisation : 127.0.0.1
- Contact :
Re: dernière modification dans une table
As-tu recherché dans le forum ? Il y a des exemples de requête.henriG a écrit :Y a t'il une astuce pour mettre à jour ce champ lors d'une modif directement dans la table ?
Les instructions divergent d'un SGBD à l'autre.
Peu importe, cette notion est du ressort du SGBD.henriG a écrit :Ca a l'air possible pour une table externe, mais on est encore sur une table intégrée
Re: dernière modification dans une table
Ok, j'ai cherché ... et trouvé la requète à lancer par Outils > SQL :
ALTER TABLE "Adhérents" ALTER COLUMN "datemaj" SET DEFAULT CURRENT_TIMESTAMP
qui définit une valeur par défaut égale à la date -heure de la création (ou CURRENT_DATE si on ne désire que la date).
Ca fonctionne pour l'ajout d'enregistrement, par contre la modification, je pense être obligé de passer par une Macro, et de faire les modifications via un formulaire.
Merci !
ALTER TABLE "Adhérents" ALTER COLUMN "datemaj" SET DEFAULT CURRENT_TIMESTAMP
qui définit une valeur par défaut égale à la date -heure de la création (ou CURRENT_DATE si on ne désire que la date).
Ca fonctionne pour l'ajout d'enregistrement, par contre la modification, je pense être obligé de passer par une Macro, et de faire les modifications via un formulaire.
Merci !
Libreoffice 6.4.7.2 sous Debian 10 Buster
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
- Dude
- IdOOle de la suite
- Messages : 25145
- Inscription : 03 mars 2006 08:45
- Localisation : 127.0.0.1
- Contact :
Re: dernière modification dans une table
Pourquoi modifier ? Ce genre de champ est fait pour de la journalisation.henriG a écrit :Ca fonctionne pour l'ajout d'enregistrement, par contre la modification
En clair, tu horodates au fur-et-à-mesure dans une table dédiée et donc, c'est un ajout à chaque fois.
Re: dernière modification dans une table
Ok pour l'utilisation d'une table dédiée à l'horodatage.
Mais comment détecter la modification d'une table si elle n'est pas faite dans un formulaire ?
Mais comment détecter la modification d'une table si elle n'est pas faite dans un formulaire ?
Libreoffice 6.4.7.2 sous Debian 10 Buster
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
- jeanmi2403
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 10:02
- Localisation : Val de Marne
Re: dernière modification dans une table
Bonsoir,
Si le but est de savoir quand un enregistrement a été modifié (désigné par "ligne" dans un post précédent), il faut effectivement un champ horodatage qui sera mis à jour par une macro.
Cette macro sera lancée par l'événement "après l'action d'enregistrement". Elle exécutera une instruction SQL du genre de celle citée ci-dessus.
Pour ne pas travailler dans le vide, il serait bon de nous donner un embryon de base posant le problème, avec ce qui existe et une description claire de ce qui reste à faire.
Cordialement
Une table ou un champ ?henriG a écrit :Ok pour l'utilisation d'une table dédiée à l'horodatage.
Si le but est de savoir quand un enregistrement a été modifié (désigné par "ligne" dans un post précédent), il faut effectivement un champ horodatage qui sera mis à jour par une macro.
Cette macro sera lancée par l'événement "après l'action d'enregistrement". Elle exécutera une instruction SQL du genre de celle citée ci-dessus.
Pour ne pas travailler dans le vide, il serait bon de nous donner un embryon de base posant le problème, avec ce qui existe et une description claire de ce qui reste à faire.
Cordialement
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Re: dernière modification dans une table
Merci !
Je précise : il s'agit de détecter la modification d'un champ dans un enregistrement.
Losque la modification se fait dans un formulaire, on sait lancer une macro qui actualise le champ horodatage (par l'évènementr avant l'action d'enregistrement).
Mais lorsque le champ est modifié dans la table, on ne sait pas actualiser l'horodatage ...
Il s'agit de la gestion des adhérents d'une association. On imprime des états avec les coordonées des adhérents ou les sorties effectuées, et on aimerait connaitre les modifications depuis le dernier état imprimé.
Cordialement
Je précise : il s'agit de détecter la modification d'un champ dans un enregistrement.
Losque la modification se fait dans un formulaire, on sait lancer une macro qui actualise le champ horodatage (par l'évènementr avant l'action d'enregistrement).
Mais lorsque le champ est modifié dans la table, on ne sait pas actualiser l'horodatage ...
Il s'agit de la gestion des adhérents d'une association. On imprime des états avec les coordonées des adhérents ou les sorties effectuées, et on aimerait connaitre les modifications depuis le dernier état imprimé.
Cordialement
Libreoffice 6.4.7.2 sous Debian 10 Buster
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
- Dude
- IdOOle de la suite
- Messages : 25145
- Inscription : 03 mars 2006 08:45
- Localisation : 127.0.0.1
- Contact :
Re: dernière modification dans une table
Si ton SGBD le supporte, il faut passer par la mécanique du TRIGGER.
- jeanmi2403
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 10:02
- Localisation : Val de Marne
Re: dernière modification dans une table
Bonjour,
Le mieux, à mon avis serait un formulaire avec un contrôle table, qui offre les mêmes services que l'éditeur de contenu de table, avec l'accès aux événements du formulaire.
@Dude ; Trigger quésaco? idem événements ?
Bonne journée,
Je ne vois pas trop l'intérêt de modifier les données directement dans la table, surtout dans un modèle relationnel où les conséquences peuvent être lourdes en terme d'intégrité.henriG a écrit :Mais lorsque le champ est modifié dans la table, on ne sait pas actualiser l'horodatage ...
Le mieux, à mon avis serait un formulaire avec un contrôle table, qui offre les mêmes services que l'éditeur de contenu de table, avec l'accès aux événements du formulaire.
@Dude ; Trigger quésaco? idem événements ?
Bonne journée,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Re: dernière modification dans une table
C'est vrai que modifier dans la table est une facilité pendant le développement et la mise au point, mais qu'en fonctionnement l'utilisation d'un formulaire, avec un contrôle table est plus sure et facile à mettre en place !
Je ne connaissais pas les Triggers, mais ça semble répondre au problème. Par contre, c'est très puissant et un peu complexe, et je vais me contenter du formulaire avec un contrôle table. Mais c'est bon à savoir pour des actions plus complexes.
A TRIGGER is a child schema object that always belongs to a TABLE or a VIEW.
Each time a DELETE, UPDATE or INSERT is performed on the table or view, additional actions are taken by the triggers that have been declared on the table or view.
Triggers are discussed in detail in Triggers chapter.
There is a separate name space for triggers.
Le chapitre sur les triggers : http://hsqldb.org/doc/2.0/guide/triggers-chapt.html
Merci à Dude et à JeanMi pour votre contribution !
Je ne connaissais pas les Triggers, mais ça semble répondre au problème. Par contre, c'est très puissant et un peu complexe, et je vais me contenter du formulaire avec un contrôle table. Mais c'est bon à savoir pour des actions plus complexes.
A TRIGGER is a child schema object that always belongs to a TABLE or a VIEW.
Each time a DELETE, UPDATE or INSERT is performed on the table or view, additional actions are taken by the triggers that have been declared on the table or view.
Triggers are discussed in detail in Triggers chapter.
There is a separate name space for triggers.
Le chapitre sur les triggers : http://hsqldb.org/doc/2.0/guide/triggers-chapt.html
Merci à Dude et à JeanMi pour votre contribution !
Libreoffice 6.4.7.2 sous Debian 10 Buster
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
LibreOffice 7.0.4.2 sous Linux Mint 20 Ulyana
- jeanmi2403
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 10:02
- Localisation : Val de Marne
Re: dernière modification dans une table
Bonsoir,
De plus, il semble bien qu'il faille programmer en JAVA. Ça fait une marche supplémentaire à monter....Pas sûr que le jeu en vaille la chandelle !
Cordialement,
Oui, mais ça, c'est un accès direct dans HSQLDB, pas sûr que ça fonctionne avec la version embarquée.henriG a écrit :Je ne connaissais pas les Triggers, mais ça semble répondre au problème. Par contre, c'est très puissant et un peu complexe, et je vais me contenter du formulaire avec un contrôle table.
De plus, il semble bien qu'il faille programmer en JAVA. Ça fait une marche supplémentaire à monter....Pas sûr que le jeu en vaille la chandelle !
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX