Report Datenveränderungen
-
Hallo zusammen,
ich möchte gerne einen "Veränderungsreport" erstellen, der mir quasi aufzeigt, welche Geräte bereits Datensatzänderungen vollzogen haben.Beispiel
PC 12233 wurde am 23.01.2016 von Gebäude Lager nach Gebäude Kunde Müller verschoben.
Monitor 9999 wurde am 07.06. 2017 von Gebäude Kunde Müller nach Kunde Meier verschoben.
Wie kann ich dieses am einfachsten realisieren?
Vielen Dank
LG
Chris
-
Hi Chris,
das kannst du am besten im Report Manager machen. Allerdings werden dort aktuell die Aktionen nicht richtig ausgegeben. Einen anderen Weg, außer in das Logbuch selber zu schauen und dort zu filtern, wüsste ich gerade auch nicht.
Lieben Gruß
Christian -
Hallo Christian,
genau das ist mein Problem.Ich habe aktuell 5000 Datensätze, wo ich Monat für Monat in der Lage sein möchte, die Veränderungen zu sehen.
Im Moment fällt mir nur ein 2 Reports zu erstellen und diese über Excel zu filtern.
Genau das möchte ich eigentlich nicht.
LG
Chris
-
Hi,
mit i-doit Bordmitteln ist das aktuell leider nicht wirklich möglich. Ich würde vorschlagen, ggf. per SQL direkt auf die Logbuch Tabellen zu gehen und dort die Änderungen rauszuholen und die Details dann per API abfragen. Beispiel Ausgabe mit Datum und Objekt-ID:
SELECT isys_logbook.isys_logbook__date,isys_catg_logb_list.isys_catg_logb_list__isys_obj__id FROM isys_logbook LEFT JOIN isys_catg_logb_list ON isys_logbook.isys_logbook__id = isys_catg_logb_list.isys_catg_logb_list__isys_logbook__id;
-
Hallo Daniel,
gibt es ein ERM Modell zu den Logbuch Tabellen?Wie kann ich über SQL die Änderungen im Logbuch herausfinden?
Beispiel Bezeichner von Player01 auf Player88 geändert.
Im Logbuch selber kann ich diese Veränderungen nicht einsehen (isys_logbook)
LG
Chris
-
Hallo,
grundsätzlich gibt es in der Knowledgebase einen Artikel zum Datenbankmodell: https://kb.i-doit.com/display/de/Datenbank-Modell
Rein über das SQL zu gehen und hier alle Informationen zu parsen wird etwas schwierig. Objektname und Change lassen sich zwar mit
SELECT isys_logbook.isys_logbook__date,isys_catg_logb_list.isys_catg_logb_list__isys_obj__id,isys_logbook.isys_logbook__obj_name_static,isys_logbook.isys_logbook__changes FROM isys_logbook LEFT JOIN isys_catg_logb_list ON isys_logbook.isys_logbook__id = isys_catg_logb_list.isys_catg_logb_list__isys_logbook__id;
herausholen, allerdings ist der eigentliche "Change" ein serialisierter String, den man erst wieder parsen müsste.
Um das auf der Kommandozeile zu machen müsste man den String isolieren udn dann durch eine PHP Funktion jagen. Ich habe das jetzt nicht durchexerziert, aber Ansätze wären:mysql -N -B -u[USERNAME] -p[PASSWORD] -e "SELECT isys_logbook.isys_logbook__date,isys_catg_logb_list.isys_catg_logb_list__isys_obj__id,isys_logbook.isys_logbook__obj_name_static,isys_logbook.isys_logbook__changes FROM isys_logbook LEFT JOIN isys_catg_logb_list ON isys_logbook.isys_logbook__id = isys_catg_logb_list.isys_catg_logb_list__isys_logbook__id;" [DATABASE_NAME] |awk -F $'\t' '{print $4}'
um die Daten zu isolieren (geht auch einfacher, aber ich mag einfach awk
und dann die Daten in ein PHP Kommando bringen ($1 müsste dann anstatt dessen der String sein):
php -r " echo var_dump(unserialize('"$1"')); echo \"\\n\";"
Solltest Du also Lust zu basteln haben, ließe sich das als Bashscript oder eigenständiges PHP Script lösen.
Eine einfache, schnelle Lösung gibt es so leider nicht.