Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Arbeiten in einem temporären TJvMemoryData

  Alt 8. Mai 2014, 07:28
Ich verstehe nicht, wieso
1. eine Spalte eines Memory-Datasets nicht bearbeitbar sein sollte
2. Du keine zusätzlichen Spalten in das Dataset einfügen kannst.

Wenn dann das 'LoadFrom' nicht mehr funktioniert, machst Du das eben per Hand:
Delphi-Quellcode:
Procedure CopyData(aSrc, aDest : TDataSet);
Begin
  aDest.DisableControls;
  Try
     aSrc.First;
     while not aSrc.Eof do begin
        aDest.Append;
        aDest['Field1'] := aSrc['Field1'];
        ...
        aDest.Post;
  Finally
     aDest.EnableControls;
  end
end;
Natürlich musst Du dafür sorgen, das die Zieltabelle leer ist (außer, Du willst sie erweitern). Auf diese Weise bist Du aber von der Quelltabelle vollkommen unabhängig, denn Du kannst so die Query jederzeit ändern und musst dann nur in dieser Routine das Mapping (also die Zuweisungen) anpassen. Die Zieltabelle (dein Memory-Dataset) bleibt davon unberührt.
Umgekehrt kannst Du nun auch die Memorytabelle in ihrer Struktur verändern, ohne die Query anfassen zu müssen. Beispielsweise mit zusätzlichen Feldern.

Zu Punkt 4: Du kannst im AfterPost-Event des Memorydatensatzes weitere Aktionen auslösen, aber das würde ich nicht tun. Stattdessen würde ich den Anwender die Bestellungen (im Memory) bearbeiten lassen und erst nach Bestätigung (OK-Taste, 'Wollen Sie die Bestellungen jetzt auslösen') gehst Du durch die Tabelle und führst für jeden Datensatz die Bestellung aus.

Geändert von Dejan Vu ( 8. Mai 2014 um 07:32 Uhr)
  Mit Zitat antworten Zitat