Announcement

Collapse
No announcement yet.

Vorgangsweise beim abbrechen in Verbindung mit Datasets

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vorgangsweise beim abbrechen in Verbindung mit Datasets

    Hallo zusammen,

    ich habe mal eine generelle Frage dazu wie in der folgenden Situatuin vorgegangen wird.

    Ich habe verschiedene Datasets, welche ich mit einem Dialogfenster (Os,Abbrechen) bearbeiten möchte. Auf diesem Dialogfenster kann ich nochmals weitere Abhängige Datensätze bearbeiten. Nun muss ich aber falls Abbrechen gewählt wird den zustand von vorher wieder herstellen.

    Wie wird da vorgegangen. Ich mache mir im Moment immer eine Kopie des Datasets, was in meinem Fall ziemlich speicheraufwändig wird. Aber nicht nur das ist ein Problem. Wenn ich abbrechen wähle und die Daten von der Kopie des Datasets zurückkopierte, dann muss ich die vorhandenen löschen und neu einfügen. Ich arbeite im BatchOptimistic-Modus, und somit werden bei einem Updatebatch die selben Operationen auch dort durch geführt, was

    a.) länger dauert
    b.) noch einige Probleme mit Löschweitergaben auf abhängige Tabellen mitbringt.

    Kann mir jemand vielleicht eine andere Möglichkeit nennen, mit welcher ich das umgehen kann ?

    mfg

    Astner Klaus

  • #2
    Hallo Klaus,<BR><BR>eigentlich bist du schon im richtigen Modus. Aber hast du auch die Connections der Datasets getrennt bzw. auf NIL gesetzt? Wenn die Daten also wirklich erst einmal ausschließlich auf dem Client verarbeitet werden, dann kannst du über CancelBatch die Aktualisierungen zurücknehmen oder einfach nach einer Wiederherstellung der Connections den alten Datenbestand wieder vom Server herunterladen.<BR><BR>Viele Grüße Ola

    Comment


    • #3
      Hallo Olaf,

      Danke für die prompte Antwort.

      Das eigentlich Problem ist aber immer noch das, dass ich auch den Status vor dem bearbeiten im Grunde noch nicht in der Datenbank habe. Der ablauf ist so ungefähr der folgende. Ich habe ein Dokument, welches bereits in der Datenbank gespeichert wurde. In diesem Dokument (wie eine Transportdokument) gibt es verschiedene Deteilzeilen, welche wiederum Detailzeilen haben. Ich öffne also das Dokument, dabei werden alle Detailzeilen in den Speicher geladen. Nun kann ich eine Zeile bearbeiten, und die Änderungen mit OK bestätigen. Dabei wird aber die Detailzeile nicht in die Datenbank zurückgeschrieben, das passiert erst nach dem Speichern des kompletten Dokuments. Wenn ich nun von derselben Zeile einen Detailsatz bearbeiten möchte, wercher schon mal vorher bearbeitet wurde, und dann abbrechen wähle, dann muss ich den Zustand vor der 2ten Bearbeitung wiederherstellen können. Also muss ich mir immer wenn ich ihn bearbeite eine Kopie vorher machen, und diese im Fall eines Abbruches wieder zurückkopieren. Und genau da kommt dann mein Problem zum Vorschein. Beim Zurückkopieren muss ich erstmals alle Detaildatensätze dieses Datensatzes löschen, und dann die kopierten wieder einfügen. Beim Updatebatch werden dann alle gelöschten Detaildatensätze wieder gelöscht, durch die Löschweitergabe auch die davon abhängigen, und damit bin ich auch schon am Ende. Wenn dies gelöscht werden, und ich sie mittels Updatebatch des 2ten Datasets zurückspielen will, dann sind sie schon weg.

      Ich hoffe dass das verständlich ist. Es ist ziemlich kompliziert.

      mfg

      Astner Klau

      Comment


      • #4
        Hi Klaus,

        ich bin auch Spediteur und kenne das Problem...<br>
        Für die Detaildatensätze würde ich Objekte anlegen, die der Struktur der Detailtabellen entsprechen. Die kann der Benutzer dann beliebig bearbeiten, ändern oder löschen. Der Vorteil von kleinen Objekten ist, sie müssen nicht alles können was ein RS kann, sind daher schön klein, sauschnell und wenig speicherintensiv. Erst beim "finalen" Speichern werden die in den Objekten gehaltenen Daten in DB zurückgeschrieben.

        Gruß
        Uw

        Comment


        • #5
          Nicht vergessen, vor dem Schriben zu prüfen, ob die Daten von einem anderen Nutzer geändert wurden. ;-

          Comment

          Working...
          X