Rapports Complexes#
Vous pouvez générer de nombreux rapports utiles avec le générateur de requêtes du gestionnaire de rapports. Pour des cas plus complexes, vous pouvez également modifier le SQL derrière celui-ci et ainsi utiliser des fonctions MySQL ou MariaDB, par exemple, pour interroger des intervalles de temps.
Préparation#
Les connaissances requises autour du Reporting et de la structure de la base de données d'i-doit peuvent être trouvées dans les articles respectifs. Une bonne connaissance de SQL ou des fonctions SQL fournies par MySQL/MariaDB est clairement un avantage.
Intervalles de Temps#
Souvent, un rapport est nécessaire pour fournir des informations sur un certain intervalle de temps. i-doit fournit déjà les champs requis avec des spécifications de date, par exemple, quand un objet a été modifié la dernière fois ou quand un contrat de maintenance expire. Le générateur de requêtes du gestionnaire de rapports peut adresser ces champs mais seulement avec des spécifications de date fixes : Quels objets ont été modifiés depuis le 2016-01-01 ? Cependant, souvent la date doit être en relation avec le temps actuel : Quels objets ont été modifiés ce mois-ci ? Vous ne spécifiez pas le mois mais il est supposé que le mois pendant lequel le rapport est exécuté est le mois en question.
Pour générer un tel rapport, nous créons d'abord un nouveau rapport avec le générateur de requêtes. Pour la requête, nous ajoutons, par exemple, le titre de l'objet, le type d'objet, la date de la dernière modification et le nom de la personne ayant effectué la modification.
Nous enregistrons ce rapport, puis nous le dupliquons et nommons la copie avec un nom significatif, par exemple "Objets modifiés de ce mois".
Modification SQL
Nous dupliquons le rapport car il ne peut plus être ouvert avec le générateur de requêtes une fois que le SQL a été modifié.
Ensuite, nous modifions la copie avec l'éditeur SQL et étendons la clause WHERE :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Pour restreindre l'intervalle de temps à ce mois, nous utilisons les fonctions SQL NOW()
, YEAR()
et MONTH()
. Elles sont appliquées à la date de modification enregistrée dans la colonne de table bj_main.isys_obj__updated
. De plus, nous excluons tous les objets de relation avec j2.isys_obj_type__const != 'C__OBJTYPE__RELATION'
.
Vous pouvez trouver cet exemple et d'autres concernant la requête des intervalles de temps sur le site web Stackoverflow.