Hallo Community,
folgendes Problem:
Ich habe ein DBGrid und ein ADOQuery dahinter.
Im DBGrid kann ich multiselecten, d.h. nach der Auswahl eines Datensatzes kann ich beliebig weitere mit gedrückter STRG-Taste selektieren
oder mit gedrückter SHIFT-Taste einen Datensatz anklicken, wodurch der gesamte Bereich selektiert wird.
Nach dieser Auswahl soll von allen selektierten Datensätzen ein bestimmtes Feld aufsummiert werden.
Dies wurde mittels gotobookmark realisiert.
Mein Problem ist, dass gotobookmark am Ende bei Move in der
Unit System rauskommt und dort werden die Inhalte der Calcfields weggeschmissen und anschließend neu ermittelt.
Da sich in diesem Fall die Calcfields nicht aus den anderen Queryfields errechnen, sondern mittels einer ganzen Reihe an Selects ermittelt werden, ist das richtig spaßig...
4-5s pro Datensatz und man hat (zumindest theoretisch) die Möglichkeit, Hunderte zu selektieren... (ist nicht von mir, so viel schonmal vorweg)
Ich habe keine Möglichkeit gefunden, die aufzusummierenden Werte aus dem DBGrid selbst auszulesen, im Gegenteil, ich habe recherchiert, dass dies nicht möglich ist.
Jetzt ist die Frage, wie ich verhindern kann, dass er die Calcfields neu ermitteln will. Beim Debuggen in den Debug-DCUs ist mir leider kein Parameter aufgefallen, den ich setzen könnte, um es zu umgehen, daher bin ich ein wenig ratlos. Man müsste sich entweder die Inhalte der Calcfields merken und in der oncalcfields-routine wieder zuweisen (habe aber noch keine sinnvolle möglichkeit gefunden, was das "wie genau" angeht) oder irgendwie anders rumtricksen (dbgrid als stringgrid casten? ^^)
Sauberer, jedoch zeitlich den Rahmen sprengend wäre es natürlich, eine Tabellenwertfunktion mit mehreren Skalarwertfunktionen zu machen und sich so die Calcfields zu sparen
feel free 2 post your senf