![]() |
Datenbank: as400 • Version: ? • Zugriff über: ADO
gotobookmark
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 ;) |
AW: gotobookmark
Das Abhängen von OnCalcFields hast Du ja bereits erwogen.
Das größere Problem scheint mir hier zu liegen Zitat:
|
AW: gotobookmark
Es in einen Select zu packen mit Joins und Cases erscheint mir nicht möglich.
In der oncalcfields-Routine stehen 2 Bildschirmhöhen Code mit if-Anweisungen und Selects. ^^ Daher wäre der sinnvollste Weg sql-functions, da kämen aber 2 Probleme auf mich zu: edit und post ^^ |
AW: gotobookmark
Du kannst das Property AutoCalcFields der ADOQuery von True auf False setzen.
Dann wird das Event OnCalcFields weniger oft abgefeuert. |
AW: gotobookmark
Alternativ könntest Du eine 'In-memory Datatset' mit den Daten befüllen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz