History

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von MrTrebron.

    Hallo,

    ich habe aktuell ein Programm geschrieben welches auf eine Datenbank zugreift mittels DataGridView in Visual Basic.
    Ich habe meine Datensätze in der SQL Datenbank und ändere eine beliebige Zeile mit DataGridView und die Änderung wird gespeichert.

    Jetzt möchte die Zeile die ich geändert habe mit den zuvor enthaltenen Daten in eine andere SQL Tabelle schreiben und auch die neuen Daten, damit man eine change history hat.

    Beispiel: -Tabelle 1 kann ich bearbeiten, Tabelle 2 ist die History

    - In der Tabelle 1 wird das Alter von 33 auf 34 verändert und die alten + neue Daten fließen in Tabelle 2 ein
    Tabelle 1IDNameAlter


    1Hans34

    Tabelle 2IDNameAltNameNeuAlterAltAlterNeu

    1HansHans3334


    Gibt es eine einfache Möglichkeit mittels DataGridView?
    Wenn Du eine DB abfragst, wie machst Du das dan genau? Dein DGV fragt bestimmt keine DB ab.
    Ein DGV ist ein VIEW, das ist hauptsächlich zur tabellarischen Ausgabe geeignet. Ich weiß, dass man in einem DGV auch Daten ändern und neu anlegen kann.
    Was Du willst, wäre ja eigentlich einen neuen Datensazu schreiben, egal ob in der abgefragten Tabelle oder in einer Archiv-Tabelle. Gerade wenn Du das in eine andere Tabelle schreiben willst, hat das mit dem DGV realtiv wenig zu tun, Du müsstest nur eine Veränderung feststellen (über Events des DGV meinetwegen) und dann einen Archivsatz komplet per Code schreiben.
    Ist ja nicht so aufwändig. Aber ich würde da diesen Alt-Neu Vergleich nicht machen, wenn Archiv, dann alles rein, also der erste Archiv-DS entspricht dem Nutz-DS, der zweite Archiv-Ds entspricht dem Nutz-DS nach der ersten Änderung, etc.
    So hast Du im Nutz-DS immer direkt das letzte Änderungsdatum (sofern es so ein Feld gibt) und der erste Archiveintrag zu dem Datensatz enthält das Anlagedatum.
    Ich weiß nicht wie Keepass das macht, aber da hat jeder Eintrag eine Vorgängertabelle, die man allerdings auch verwerfen kann.
    Natürlich schreibt man in die History nur die Änderungen.
    So aus dem Kopf erinnere ich mich an eine Methode GetChanges() des Dataset welches eine Dataset zurück liefert in dem nur die Änderungen enthalten sind.
    Dies mit Zeitstempel und User kommt in die e Richtung.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Vielen Dank für die Antworten.
    Ich bin noch sehr unwissend was die Sprachen über Assembler hinaus anbelangt.

    Ich kann mittels

    VB.NET-Quellcode

    1. SchablonenverwaltungDataSet.HasChanges(DataRowState.Modified) Then


    feststellen das sich die Daten geändert haben, aber leider nicht welche genau.
    Wenn ich hier mittels DataGridView nicht weiter komme, muss ich mir von Hand eine Klasse schreiben die mir dies erledigt.
    Wie ich schon geschrieben habe, GetChanges()
    msdn.microsoft.com/de-de/libra…255&MSPPError=-2147217396
    msdn.microsoft.com/de-de/library/0f8054fy(v=vs.110).aspx
    liefert ein Dataset mit allen Änderungen ab
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.