Ralf (Jumpy) ich bin sowas von glücklich, dass es jetzt mit deinem Codevorschlag genau so funktioniert, wie ich es mir vorgestellt habe. Er tut all das, was ich zurückliegend beschrieben habe, sogar ohne zu murren.
Gestatte mir bitte einige Fragen dazu:
1.) Das Löschen aller Datensätze mit
Delphi-Quellcode:
zqryMain.SQL.Text:='Delete From WARENVERKAUF1';
zqryMain.ExecSQL;
ist offensichtlich auf dem Desktop nicht sichtbar, da das Listview in dieser Phase nicht aktualisiert wird. Es bleiben alle Datensätze in der Tabelle und in der objectlist. Richtig?
2.) mit
Zitat:
Insert-Statement für bekannte Datensätze mit sinnvoller ID
meinst Du all jene Datensätze in der ObjectList mit ID <>-1, also die DS, die zuvor in der
DB standen und die nun wieder in die
DB zurückgeschrieben werden. Richtig?
3. Insert für wirklich neue Datensätze ist die Möglichkeit, die mit hinzufügen für eine ID= -1 sorgen und nun neu aufgenommen werden und dabei zugleich eine ID der
DB (also <> -1 erhalten. Richtig?
4.) was bedeutet:
Delphi-Quellcode:
if self[i].ID>-1 then //Parameter ID wird nur in diesem Fall benötigt
zqryMain.Params.ParamValues['CID']:=self[i].ID;
Parameter ID wird nur in diesem Fall benötigt. Davor gab es doch diese if-Bedingung bereits auch?
5.) Die procedure unterscheidet sich doch wesentlich von den Vorversionen, denn ein Update-Statement gibt es nun nicht nur Insert, da ja zunächst die
DB völlig gelöscht wird, um dann "würdige Datensätze" und neue Datensätze aufzunehmen. Bearbeiten klappt auch, da auch in diesm Fall kein Update erforderlich ist, denn die Veränderung wird ja neu eingefügt. Das ist ja dialektisch!(3. dialektisches Grundgesetz Negation der Negation) Richtig in Bezug auf den programmtechnischen Inhalt?
6.) Wäre auch eine selektive Löschung des aktuellen Datensatzes über die Auswahl der ID= :CID möglich? Bedeutet dein Hinweis unter 3b dass die"würdigen Datensätze" trotz ID<> -1 eine völlig neue ID von der
DB erhalten, die es zuvor nicht gab. Eigentlich logisch den sonst gäbe es ein Chaos.
Ich danke Dir ganz ganz herzlich, denn so hat das Programm zunächst seinen Ende gefunden und ich gehe daran alles zu kommentieren und einzuprägen.
Nochmals zu den grundsätzlichen Anmerkungen von K-H (p80286): Ich habe doch all das was Du angesprochen hast zuvor bereits formuliert, also ein "Pflichtenheft" erstellt, in dem ich dargelegt habe, was ich will und was das Programm soll und tun muss. Dann wurde Schritt für Schritt, mit Stolpern und Stürzen all das implementiert geprüft, verworfen und erneut eingefügt. Was hätte ich denn da noch darlegen sollen? Es geht darum, dass ich all das Schritt für Schritt auch so verstehe dass ich euren Hinweisen wirklich folgen kann.
Nochmals Danke für Eure Bemühungen, verbunden mit der voran geäußerten Bitte nach Tutorial-Hinweisen und int. Links. (Delphi-Starter-Tutorial bitte nicht, denn das habe ich bereits studiert und Bücher, die nun gut 15 Jahre als sind mit Stand Delphi 4 bis 7 habe ich auch, doch darin sind derartige Probleme leider überhaupt nicht enthalten.