AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

gotobookmark

Ein Thema von hyype · begonnen am 24. Feb 2012 · letzter Beitrag vom 24. Feb 2012
Antwort Antwort
hyype

Registriert seit: 5. Nov 2008
97 Beiträge
 
Delphi XE2 Professional
 
#1

gotobookmark

  Alt 24. Feb 2012, 14:33
Datenbank: as400 • Version: ? • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: gotobookmark

  Alt 24. Feb 2012, 14:39
Das Abhängen von OnCalcFields hast Du ja bereits erwogen.

Das größere Problem scheint mir hier zu liegen
Zitat:
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.
lässt sich hier nichts optimieren?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
hyype

Registriert seit: 5. Nov 2008
97 Beiträge
 
Delphi XE2 Professional
 
#3

AW: gotobookmark

  Alt 24. Feb 2012, 14:47
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 ^^
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: gotobookmark

  Alt 24. Feb 2012, 15:12
Du kannst das Property AutoCalcFields der ADOQuery von True auf False setzen.
Dann wird das Event OnCalcFields weniger oft abgefeuert.
Andreas
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: gotobookmark

  Alt 24. Feb 2012, 21:38
Alternativ könntest Du eine 'In-memory Datatset' mit den Daten befüllen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz