Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Unterschiede in Spalten makieren

Dieses Thema im Forum "Microsoft Access" wurde erstellt von Dave1337, 20 Juli 2016.

  1. Dave1337

    Dave1337 Neuer Benutzer

    Guten Tag,
    meine Datenbank erstellt eine log-Tabelle von Änderungen in den einzelnen Datensätzen.

    Nun habe ich das Problem, wenn ich mir den Log zu einem bestimmten Datensatz anzeigen lasse, in einem Endlosformular, ist das Rech unübersichtlich heraus zu finden was sich in dem Datensatz im vergleich zu dem letzten malen geändert hat.

    Ist es möglich die Spalten mit einander zu vergleich und die Unterschiede zu markieren.

    Hier mal ein Bespiel:

    ID Name Datum

    1 Test_1 13.05.2016
    1 Test 13.05.2016

    Hier hätte sich der Name geändert und diesen hätte ich dann ganz gerne eingefärbt/markiert.
    Da in meiner Datenbank ja um einiges mehr als nur Name angezeigt wird ist das manchmal recht unübersichtlich.

    Hat jemand Abhilfe für mich?
     
  2. ukulele

    ukulele Datenbank-Guru

    Also bei einer regulären SQL DB kann man nichts in der Ausgabe färben, das fällt unter Formatierung und ist nicht wirklich eine Aufgabe der DB. Access ist nicht nur DB sondern auch Frontend, ich weiß aber nicht genau ob es hier so etwas wie Bedingte Formate in Excel gibt, ich glaube da muss man schon viel basteln. Das bezieht sich dann auch nur auf die Darstellung der Daten und hat mit SQL nichts zu tun.

    Mit SQL könnte man mit Fleißarbeit eine andere Übersicht zusammen bauen. Die müsste man allerdings für jedes Daten-Feld anlegen um unterschiede schön übersichtlich zu bekommen.
    Code:
    WITH t AS (
       SELECT   ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Datum) AS zeile,
           ID,
           Name AS Wert,
           Datum
       FROM   tabelle
       )
    SELECT   t2.ID,
         t2.Datum,
         'Name' AS Spalte,
         t1.Wert AS alter_Wert,
         t2.Wert AS neuer_Wert
    FROM   t t1
    LEFT JOIN t t2
    ON     t1.zeile + 1 = t2.zeile
    WHERE   t1.Wert != t2.Wert
    
    Ich weiß nicht genau ob Access WITH akzeptiert.

    Alternativ könnte man gleich in einem übersichtlicheren Format loggen. Nicht immer den ganzen Datensatz sondern nur die Veränderungen a la: ID,Datum,Spalte,neuer_Wert,alter_Wert
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden