Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Clientdataset zwischen zwei Datenbankservern wechseln (https://www.delphipraxis.net/182922-clientdataset-zwischen-zwei-datenbankservern-wechseln.html)

Rainer Wolff 26. Nov 2014 16:47

Datenbank: Firebird • Version: 2.5.2 • Zugriff über: DBX

Clientdataset zwischen zwei Datenbankservern wechseln
 
Hallo,

ich habe ganz klassisch TSQLConnection, TSQLQuery, Datasetprovider, Clientdataset in meinem Projekt und möchte zwischen zwei verschiedenen Servern umschalten (einmal remote, einmal lokaler Server). Warum geht das nur, wenn ich die SQLConnection vorher schliesse? Sobald ich connected:=False auskommentiere, wird das Clientdataset verbunden und bleibt dann stur auf der erstaufgerufenen Datenmenge stehen.

Code:
procedure TForm8.Button1Click(Sender: TObject);
begin
  CDSStunden.Close;
  if Server then
  begin
    Remoteserver.Connected:=False;
    Localhost.Connected:=False;
    SQLQStunden.SQLConnection:=Remoteserver;
  end
  else
  begin
    Remoteserver.Connected:=False;
    Localhost.Connected:=False;
    SQLQStunden.SQLConnection:=Localhost;
  end;
  CDSStunden.Open;
  Server:=not server;
  Caption:=IntToStr(StrToInt(caption)+1);
end;

Jumpy 27. Nov 2014 07:57

AW: Clientdataset zwischen zwei Datenbankservern wechseln
 
So wie ich das verstehe benutzt du ja verschiedene Connections. Dann musst du eigentlich nur die Query schließen (nicht die Connections) und der Query eine andere Connection zuweisen und dann die Query wieder öffnen.

Rainer Wolff 27. Nov 2014 08:11

AW: Clientdataset zwischen zwei Datenbankservern wechseln
 
Genau das funktioniert ja nicht. Die SQLQuerys sind ja eh nicht active, da ich mit den Clientdatasets arbeite.

baumina 27. Nov 2014 08:14

AW: Clientdataset zwischen zwei Datenbankservern wechseln
 
Wenn die SQLQuerys nicht aktiv sind, woher sollten dann die Daten kommen?

Rainer Wolff 27. Nov 2014 08:31

AW: Clientdataset zwischen zwei Datenbankservern wechseln
 
Aus dem Clientdataset? Die SQLQuery wird doch nur kurz vom Clientdataset geöffnet, um die Daten einzulesen und dann wieder geschlossen.

baumina 27. Nov 2014 08:46

AW: Clientdataset zwischen zwei Datenbankservern wechseln
 
Hm, dann musst du wohl nochmal genau erklären was du willst, ich habs so verstanden:

- Connection1 active
- Query benutzt Connection1
- Client-Dataset nimmt Daten aus Query (dazu muss Query aktiv sein)

Connection-Wechsel
- Connection2 active
- Query benutzt Connection2
- Client-Dataset nimmt Daten aus Query (dazu muss Query aktiv sein)

Rainer Wolff 27. Nov 2014 09:30

AW: Clientdataset zwischen zwei Datenbankservern wechseln
 
nö, Query muss dazu doch nicht ständig aktiv sein.

Clientdataset.Open (oder Clientdataset.Active:=true) öffnet selber intern die Query, zieht sich die Daten ins RAM und macht die Query wieder zu. Erst bei Refresh, ApplyUpdates und so wird wieder auf die Datenmenge zugegriffen.

Dejan Vu 27. Nov 2014 10:01

AW: Clientdataset zwischen zwei Datenbankservern wechseln
 
Genau, und wenn man das CDS per 'Close' schließt, bleiben die Daten im Speicher. Das CDS unterstützt das Briefcasemodel. Ergo muss man dem explizit sagen: "Saug Dir die Daten nochmal". Eventuell geht das über ein Clear+Open auch, wobei 'Refresh' irgendwie sauberer wäre.

Uwe Raabe 27. Nov 2014 10:26

AW: Clientdataset zwischen zwei Datenbankservern wechseln
 
Zitat:

Zitat von Dejan Vu (Beitrag 1281278)
Genau, und wenn man das CDS per 'Close' schließt, bleiben die Daten im Speicher. Das CDS unterstützt das Briefcasemodel. Ergo muss man dem explizit sagen: "Saug Dir die Daten nochmal". Eventuell geht das über ein Clear+Open auch, wobei 'Refresh' irgendwie sauberer wäre.

Ich habe es hier mangels passender Testumgebung noch nicht nachvollzogen, aber wenn deine Aussage stimmt, dann widerspricht das dem Statement im ersten Post, daß es funktioniert, wenn die Connection geschlossen wird.

Nebenbei, die Query wird in jedem Fall mit der Zuweisung der Connection geschlossen.

Rainer Wolff 27. Nov 2014 10:41

AW: Clientdataset zwischen zwei Datenbankservern wechseln
 
Ein EmptyDataset und Refresh bringen auf jeden Fall nix, grade getestet


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.
Seite 1 von 2  1 2      

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