AGB  ·  Datenschutz  ·  Impressum  







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

Interfaces "zwischenspeichern"

Ein Thema von MatthiasR · begonnen am 2. Mär 2009 · letzter Beitrag vom 3. Mär 2009
Antwort Antwort
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#1

Interfaces "zwischenspeichern"

  Alt 2. Mär 2009, 15:18
Ich stehe aktuell vor folgendem Problem:

Ich arbeite mit den ZEOSLib Datenbankkomponenten und möchte mir gewisse Query-Ergebnismengen von verschiedenen Select-Befehlen zwischenspeichern, um später wieder darauf zurückgreifen zu können. Ich verwende eine Query-Komponente, die nach jedem Select-Befehl mir ein Resultat vom Interface "IZResultSet" zurück gibt.

Spontan hatte ich versucht mit einer TObjectList zu arbeiten, aber die nimmt ja nur Nachfahren von TObject auf und keine Interfaces. Und für jedes zwischenzuspeichernde Ergebnis ein eigenes Query-Objekt anzulegen, das ich dann in einer TObjectList speichere, kann doch auch nicht des Rätsels Lösung sein. Oder werde ich da gar nicht drum herum kommen? Kann ich die Ergebnisse überhaupt zwischenspeichern oder sind die beim nächsten Query.Open (also beim Absenden einer neuen Anfrage) mit den neuen Ergebnissen überschrieben (bin jetzt nicht soooo der Interface-Guru, daher weiß ich das gerade leider nicht).
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Interfaces "zwischenspeichern"

  Alt 2. Mär 2009, 15:24
Object -> TObjectList
Interface -> TInterfaceList
Markus Kinzler
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#3

Re: Interfaces "zwischenspeichern"

  Alt 2. Mär 2009, 15:47

So einfach kann eine Lösung sein...

Ist nur die Frage, ob sich das "Objekt" hinter dem Interface ändert, wenn ich ein neues Select ausführe, aber das probiere ich nun einfach mal aus .
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#4

Re: Interfaces "zwischenspeichern"

  Alt 2. Mär 2009, 16:38
Scheint nicht so zu funktionieren, wie ich mir das vorgestellt hatte . Die alten Query-Ergebnisse werden bei neuen Select-Befehlen verworfen.
  Mit Zitat antworten Zitat
shmia

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

Re: Interfaces "zwischenspeichern"

  Alt 2. Mär 2009, 17:43
Haben alle Query-Ergebnisse die gleiche Struktur?
Falls ja, dann kannst du die Ergebnisse in ein Memory-Dataset kopieren.
Andreas
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#6

Re: Interfaces "zwischenspeichern"

  Alt 3. Mär 2009, 08:56
Leider nein. Die Strukturen unterscheiden sich jeweils, weil die Abfragen auf verschiedene Tabellen laufen.

Bleibt für mich der einzig gangbare Weg, jeweils ein eigenes Query-Objekt anzulegen. Nur stellt sich dann die Frage, wieviele gleichzeitig geöffnete Queries der PostgreSQL-Server bzw. auch der Rechner, auf dem das Programm später laufen soll, überhaupt verträgt. Was ist da so die Obergrenze von gleichzeitig aktiven Query-Objekten, wenn sich alle die gleiche Connection teilen würden?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Interfaces "zwischenspeichern"

  Alt 3. Mär 2009, 10:01
Zitat von Infect:
Leider nein. Die Strukturen unterscheiden sich jeweils, weil die Abfragen auf verschiedene Tabellen laufen.

Bleibt für mich der einzig gangbare Weg, jeweils ein eigenes Query-Objekt anzulegen. Nur stellt sich dann die Frage, wieviele gleichzeitig geöffnete Queries der PostgreSQL-Server bzw. auch der Rechner, auf dem das Programm später laufen soll, überhaupt verträgt. Was ist da so die Obergrenze von gleichzeitig aktiven Query-Objekten, wenn sich alle die gleiche Connection teilen würden?
In diesem Fall (verschiedene Queries) würde ich zur Speicherung der Daten TClientDataSet verwenden je Query eines. Der Vorteil ist, dass nach dem Öffnen einer Query die Connection geschlossen werden kann, im ClientDataSet aber immer noch alle Datensätze stehen und daher 'offline' benutzt werden können.

Die Anzahl gleichzeitig verfügbarer Abfragen ist dann durch den Speicher des Client-Rechners begrenzt.
Michael Justin
habarisoft.com
  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 14:02 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