AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Dataset immer wieder neu erstellen (create/free) oder ein mal bei Bedarf
Thema durchsuchen
Ansicht
Themen-Optionen

Dataset immer wieder neu erstellen (create/free) oder ein mal bei Bedarf

Ein Thema von norwegen60 · begonnen am 12. Feb 2016 · letzter Beitrag vom 12. Feb 2016
Antwort Antwort
nahpets
(Gast)

n/a Beiträge
 
#1

AW: Dataset immer wieder neu erstellen (create/free) oder ein mal bei Bedarf

  Alt 12. Feb 2016, 12:19
Hinter einem DataSet kann eine beliebig komplizierte Abfrage stecken. Damit kann beim Laden der Daten eine nicht unerhebliche Laufzeit entstehen.

Wenn ich eine Abfrage nur einmal brauche, sie auswerte und dann nie wieder (mit den gerade aktuellen Daten) benötige, spricht nichts gegen ein Erstellen und nach Verarbeitungsende dem Freigeben eines DataSets.

Wird eine unveränderte Datenmenge jedoch wiederholt in gleicher Form benötigt, würd' ich sie nicht bei jedem Zugriff neu erstellen, sondern per Cursor... (ggfls. Filter) navigieren.

Datenbankverbindungen öffne ich beim ersten Gebrauch und schließe sie, wenn ich weiß, dass ich sie nicht mehr benötige.

Also z. B. beim Programmstart und beim Programmende.
Kann ein Programm alternativ auf unterschiedliche Datenbanken zugreifen, wird die Datenbankverbindung halt vor dem ersten Zugriff geöffnet und beim Datenbankwechsel die aktuelle Datenbankverbindung geschlossen und die neue Datenbankverbindung geöffnet.
Hierbei erstelle ich die entsprechende Komponente jedoch nicht jedesmal neu bzw. gebe sie frei, sondern verwende sie wieder.

Anders mache ich es nur, wenn die gesamte Datenbankzugriffsschicht in einer Klasse gekapselt ist und das Erstellen bzw. Freigeben aller Datenbankzugriffskomponenten... innerhalb dieser Klasse erfolgt. (Dies sind dann eher Batchprogramm, die die Daten eh nur einmalig benötigen.)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Dataset immer wieder neu erstellen (create/free) oder ein mal bei Bedarf

  Alt 12. Feb 2016, 12:27
HWird eine unveränderte Datenmenge jedoch wiederholt in gleicher Form benötigt, würd' ich sie nicht bei jedem Zugriff neu erstellen, sondern per Cursor... (ggfls. Filter) navigieren.
Das kannst du aber nur bei Daten machen die sich nicht währen der Laufzeit des Programm verändern (Neu/Geänderte/Gelöschte Datensätze)
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Dataset immer wieder neu erstellen (create/free) oder ein mal bei Bedarf

  Alt 12. Feb 2016, 12:29
Wird eine unveränderte Datenmenge jedoch wiederholt in gleicher Form benötigt, würd' ich sie nicht bei jedem Zugriff neu erstellen, sondern per Cursor... (ggfls. Filter) navigieren.
Das kannst du aber nur bei Daten machen die sich nicht währen der Laufzeit des Programm verändern (Neu/Geänderte/Gelöschte Datensätze)
Ja, natürlich, deshalb schrieb ich ja auch
Zitat:
Wird eine unveränderte Datenmenge jedoch wiederholt in gleicher Form benötigt...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Dataset immer wieder neu erstellen (create/free) oder ein mal bei Bedarf

  Alt 12. Feb 2016, 12:33
Wird eine unveränderte Datenmenge jedoch wiederholt in gleicher Form benötigt, würd' ich sie nicht bei jedem Zugriff neu erstellen, sondern per Cursor... (ggfls. Filter) navigieren.
Das kannst du aber nur bei Daten machen die sich nicht währen der Laufzeit des Programm verändern (Neu/Geänderte/Gelöschte Datensätze)
Ja, natürlich, deshalb schrieb ich ja auch
Zitat:
Wird eine unveränderte Datenmenge jedoch wiederholt in gleicher Form benötigt...
Du hast eine Datenmenge geholt und diese Repräsentiert einen Zustand x.
Diese wird auch wenn man über Filter und Curser arbeitet auch in 5 Stunden diesen veralteten Zustand haben.
Das was evtl. bei "Datenbanken" wie dBase und Co. funktioniert wird bei einer richtigen DB nicht funktieren. Hier musst du nochmal die Datenbank abfragen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Dataset immer wieder neu erstellen (create/free) oder ein mal bei Bedarf

  Alt 12. Feb 2016, 12:49
Wird eine unveränderte Datenmenge jedoch wiederholt in gleicher Form benötigt, würd' ich sie nicht bei jedem Zugriff neu erstellen, sondern per Cursor... (ggfls. Filter) navigieren.
Das kannst du aber nur bei Daten machen die sich nicht währen der Laufzeit des Programm verändern (Neu/Geänderte/Gelöschte Datensätze)
Ja, natürlich, deshalb schrieb ich ja auch
Zitat:
Wird eine unveränderte Datenmenge jedoch wiederholt in gleicher Form benötigt...
Du hast eine Datenmenge geholt und diese Repräsentiert einen Zustand x.
Diese wird auch wenn man über Filter und Curser arbeitet auch in 5 Stunden diesen veralteten Zustand haben.
Das was evtl. bei "Datenbanken" wie dBase und Co. funktioniert wird bei einer richtigen DB nicht funktieren. Hier musst du nochmal die Datenbank abfragen.
@Bernhard Geyer
Bei dem von Dir Beschriebenen wird sie aber nicht in unveränderter Form wieder benötigt, sondern es wird eine aktuallisierte Abfrage benötigt.

Wenn ich also die Datenmange x benötige und daraus konsistent zueinander passende Reports erstellen muss, oder mehrere Zielsysteme mit den Daten vom Zeitpunkt x versorgen muss...
Würde ich in so einem Fall einen DataSet mehrfach erstellen und wieder wegwerfen, könnte ich die Konsistenz der Daten nicht (zwingend) sicherstellen, da sie sich eben geändert haben können, ich aber die Daten von genau dem Zeitpunkt x benötige.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Dataset immer wieder neu erstellen (create/free) oder ein mal bei Bedarf

  Alt 12. Feb 2016, 12:37
Eigentlich sollte man die Use-Cases trennen.

Man hat ein DatenModul mit der Connection und x DataSets die auschliesslich als Lookup verwendet werden.

Delphi-Quellcode:
TBaseDataModule = class( TDataModule )
  Connection: TADOConnection;
  PersonLookup: TADOTable;
  ...
end;
Für jeden Use-Case baut man sich jetzt ein eigenes DataModule. Da packt man dann alle Tabellen/Abfragen drauf und verknüpft diese, wie man das nun so braucht. Für die Verbindung nimmt man sich das zentrale TBaseDataModule .

Kommt jetzt ein Formular daher, dann erzeugt sich dieses Formular eine Instanz von dem passenden Use-Case und verbindet die DataSets mit dem Grid/Edits/... whatever.

Dann kommt man auch nicht in die Notlage, dass sich 2 Formulare gegenseitig auf den füssen stehen, weil beide auf die gleichen DataSets zugreifen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 06:54 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