AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Pro/Contra Virtuelle Tabelle oder TObjectList
Thema durchsuchen
Ansicht
Themen-Optionen

Pro/Contra Virtuelle Tabelle oder TObjectList

Ein Thema von norwegen60 · begonnen am 28. Feb 2020 · letzter Beitrag vom 29. Feb 2020
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

Pro/Contra Virtuelle Tabelle oder TObjectList

  Alt 28. Feb 2020, 16:02
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
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Pro/Contra Virtuelle Tabelle oder TObjectList

  Alt 28. Feb 2020, 16:50
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
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#3

AW: Pro/Contra Virtuelle Tabelle oder TObjectList

  Alt 28. Feb 2020, 17:46
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:
Falls die Daten sowieso ...
Das wäre ja viel zu einfach und nicht modern genug,
nja, warum einfach und direkt, wenn man auch viele Umwege machen kann.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
668 Beiträge
 
Delphi 12 Athens
 
#4

AW: Pro/Contra Virtuelle Tabelle oder TObjectList

  Alt 28. Feb 2020, 17:58
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.
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#5

AW: Pro/Contra Virtuelle Tabelle oder TObjectList

  Alt 28. Feb 2020, 22:26
Wie schon gesagt, sprechen zwei Gründe gegen die direkte Anbindung per Datasets
  • Die Datenstruktur ist dazu völlig ungeeignet. Weiter möchte ich darauf nicht eingehen, denn das ist leider gegeben
  • Durch das einlesen in eien Klassenstruktur kann die DB auch mal Offline sein ohne dass die Anwendung bockt.

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:
  QrLabel1.Text := IntToStr(Liste[i].Nr);
  QrLabel2.Text := Liste[i].Name;
  QrLabel3.Text := Format('%5.3f',[Liste[i].Wert]);
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.
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#6

AW: Pro/Contra Virtuelle Tabelle oder TObjectList

  Alt 28. Feb 2020, 23:45
Zitat:
Die kann ich dann sowohl für die Ausgabe in ein Grid, in einen Chart oder
Wenn du mal in Richtung Firemonkey guckst, dann ist TList, Array oder DataSet kein großer Unterschied, da du alles erst über einen Adapter an die Oberfläche databindest.
(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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#7

AW: Pro/Contra Virtuelle Tabelle oder TObjectList

  Alt 29. Feb 2020, 06:21
Moin...

+ 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:
Zwischenschichten ist cool
...ist cool. In der Zwischenschicht kannst du entscheiden wo die Daten herkommen...Datenbank, CSV, REST oder gemischt...die Anwendung kennt nur die aus der Zwischenschicht "gebauten" Objekte. Ich für meinen Teil löse Dataset in der Anwendung ab. Umbau auf Objekte in der BL.

my 2 Cent...

Geändert von haentschman (29. Feb 2020 um 06:25 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.380 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Pro/Contra Virtuelle Tabelle oder TObjectList

  Alt 29. Feb 2020, 08:46
ORM und wildes Databinding mit vielen gutklingenden Zwischenschichten ist cool
nope. ORM und durchdachtes Databinding mit ausreichend Zwischenschichten ist cool

Warum eigentlich konkret TJvMemoryData? Es gibt doch noch etliche andere Memory Datasets.

Und wenn schon TObjectList, dann TObjectList <>
Meine 42 cents
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.345 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Pro/Contra Virtuelle Tabelle oder TObjectList

  Alt 29. Feb 2020, 08:46
4. In eine Klasse kann ich hinein gucken (Debug)...in ein Dataset mit Debug nicht (nur mit Hilfstools)
Dafür habe ich mal eine IDE Erweiterung geschrieben, die sich wie die TStrings-Ansicht beim Debuggen verhält und ein DBGrid anzeigt, wenn man auf diese Weise ein Dataset auswertet.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#10

AW: Pro/Contra Virtuelle Tabelle oder TObjectList

  Alt 29. Feb 2020, 09:11
Zitat:
Dafür habe ich mal eine IDE Erweiterung geschrieben, die sich wie die TStrings-Ansicht beim Debuggen verhält und ein DBGrid anzeigt, wenn man auf diese Weise ein Dataset auswertet.
..her damit. Ich habe nur ein Tool was Quasi ein Fenster öffnet...dafür immer den QT dafür ändern.

Ich wollte mal eine Visualisierung dafür machen...ich hab einfach keine Zeit.

Zitat:
Und wenn schon TObjectList, dann TObjectList <>
...versteht sich von selbst wenn man Generics hat.

Geändert von haentschman (29. Feb 2020 um 09:20 Uhr)
  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 08:56 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