![]() |
Pro/Contra Virtuelle Tabelle oder TObjectList
Hallo zusammen,
mich würde interessieren, ob es entscheidende Vor-/Nachteile zwischen einer virtuellen Tabelle (z.B. TJvMemoryData) oder TObjectList gibt. Auf die virtuellen Tabellen bin ich gestoßen, weil ich die Daten der aktuelle bestehenden TObjectList(en) in QuickReport ausgeben muss. Der einfachste Weg schien mir, die TObjectList in eine TJvMemoryData zu speichern. Die wird dann von den TSubDetail-Bändern genau gleich behandelt wie die normalen Datenbank-Tabellen. Warum ich überhaupt TObjectList verwende? Weil die Datenstruktur der gegebenen Datenbank grauenhaft ist und ein Umstellung ist aufgrund Datenintegrität nahezu unmöglich. Von daher haben wir ein Klassenbaum aufgebaut, der die Daten verwaltet. Nur beim Einlesen und der Ausgabe müssen wir uns mit der DB beschäftigen. Hat auch den Vorteil, dass wir von der DB unabhängig sind wenn die Daten mal eingelsen sind. Ein Test läuft also auch dann weiter, wenn sich die DB mal abhängt. Bisher habe ich nie virtuelle Tabellen eingesetzt. Deshalb die Frage, welche Probleme zu erwarten sind. Oder gibt es bessere Alternativen als TJvMemoryData. In einem neueren Projekt könnte ich auch auf TUniDac zurückgreifen. Das wird in diesem Projekt aber nicht eingesetzt. Falls deren TVirtualTable aber erheblich Vorteile bietet, könnte man darüber nachdenken, UniDac zu verwenden. Was mich ein bisschen stört, ist dass die Daten jetzt zweifach vorhanden sind. Immer in der TObjectList und beim Drucken auch noch in JvMemoryData. Das ganze Projekt ist noch Delphi XE Grüße und Danke für Feedbacks Gerd |
AW: Pro/Contra Virtuelle Tabelle oder TObjectList
Gibt mMn kein entweder oder - sowas wie TJvMemoryData o.ä kann genutzt werden, um bereits in anderer Form vorhandene Daten von Dingen zu konsumieren, die mit TDataSet arbeiten - z.B. Grids.
Falls die Daten sowieso direkt aus der Datenbank kommen, und dafür erst Objekte gebaut werden, die dann in eine Liste gepackt werden, die dann über ein TJvMemoryData an einen Report gegeben werden, ist das möglicherweise durchaus ungünstig und es wäre besser, die Daten direkt in einem Dataset aus der Datenbank zu saugen und an den Report zu geben. TL'DR: Es kommt drauf an :mrgreen: |
AW: Pro/Contra Virtuelle Tabelle oder TObjectList
Also ich lese überall immer raus
* ORM und wildes Databinding mit vielen gutklingenden Zwischenschichten ist cool * und DataSets sind sowas von vor 80 Jahren Zitat:
nja, warum einfach und direkt, wenn man auch viele Umwege machen kann. :stupid: |
AW: Pro/Contra Virtuelle Tabelle oder TObjectList
Die Daten sind aber anscheinend eh schon in TObjectListen. Da würde ich den QuickReport direkt aus der TObjectList füttern, gesteuert über den OnNeedData - Event.
|
AW: Pro/Contra Virtuelle Tabelle oder TObjectList
Wie schon gesagt, sprechen zwei Gründe gegen die direkte Anbindung per Datasets
Der Ansatz über OnNeedData ist interessant, erscheint mir auf die Schnelle aber aufwändiger, als das einlesen der Daten in eine virtuelle Tabelle. Die kann ich dann sowohl für die Ausgabe in ein Grid, in einen Chart oder in QuickRep verwenden. Mit der VirtualTable kann ich dann einfach im Object-Inspector den TQRDBText-Feldern die Tabellen-Felder zuweisen. OnNeedData benötigt wohl so was in der Art:
Delphi-Quellcode:
Das ist dann doch mehr Aufwand wenn man das mal für QuickReport, mal für ein Grid und das näcshte mal für ein Chart macht.
QrLabel1.Text := IntToStr(Liste[i].Nr);
QrLabel2.Text := Liste[i].Name; QrLabel3.Text := Format('%5.3f',[Liste[i].Wert]); Oder übersehe ich was. Was klar dagegen spricht ist die Mehrfachhaltung der Daten. Im Grunde ging es mir auch eher darum, ob es bei VirtualTables Besonderheiten gibt die zu beachten wären, bzw. ob es generelle Vor-/Nachteile gibt. |
AW: Pro/Contra Virtuelle Tabelle oder TObjectList
Zitat:
(k.A. wie ob/wie QuickReport dort arbeitet) Im Prinzip kann man auch für TDataSet einen Adapter schreiben, egal ob FMX oder VCL, wo ein DataSet intern auf die Daten einer (Objekt)Liste zugreift, anstatt auf ein DBMS. |
AW: Pro/Contra Virtuelle Tabelle oder TObjectList
Moin...:P
+ :thumb: Objektlist Begründung: 1. imho ist im DataSet (FireDAC) zu viel Overhead drumherum. 2. Durch eine Objektliste kann man iterieren ohne daß sich die Oberfläche bewegt! (wegen anderer Methoden die Daten anzuzeigen) 3. Dataset: Keine Strukturen wie in einer Klasse. Sinngemäß in einer Klasse Master / Detail (Liste) 4. In eine Klasse kann ich hinein gucken (Debug)...in ein Dataset mit Debug nicht (nur mit Hilfstools) Zitat:
my 2 Cent...:wink: |
AW: Pro/Contra Virtuelle Tabelle oder TObjectList
Zitat:
Warum eigentlich konkret TJvMemoryData? Es gibt doch noch etliche andere Memory Datasets. Und wenn schon TObjectList, dann TObjectList <> Meine 42 cents |
AW: Pro/Contra Virtuelle Tabelle oder TObjectList
Zitat:
|
AW: Pro/Contra Virtuelle Tabelle oder TObjectList
Zitat:
Ich wollte mal eine Visualisierung dafür machen...ich hab einfach keine Zeit. :? Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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 by Thomas Breitkreuz