AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Clientdataset zwischen zwei Datenbankservern wechseln
Thema durchsuchen
Ansicht
Themen-Optionen

Clientdataset zwischen zwei Datenbankservern wechseln

Ein Thema von Rainer Wolff · begonnen am 26. Nov 2014 · letzter Beitrag vom 27. Nov 2014
Antwort Antwort
Seite 1 von 2  1 2      
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#1

Clientdataset zwischen zwei Datenbankservern wechseln

  Alt 26. Nov 2014, 16:47
Datenbank: Firebird • Version: 2.5.2 • Zugriff über: DBX
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;

Geändert von Rainer Wolff (27. Nov 2014 um 06:56 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Clientdataset zwischen zwei Datenbankservern wechseln

  Alt 27. Nov 2014, 07:57
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.
Ralph
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Clientdataset zwischen zwei Datenbankservern wechseln

  Alt 27. Nov 2014, 08:11
Genau das funktioniert ja nicht. Die SQLQuerys sind ja eh nicht active, da ich mit den Clientdatasets arbeite.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Clientdataset zwischen zwei Datenbankservern wechseln

  Alt 27. Nov 2014, 08:14
Wenn die SQLQuerys nicht aktiv sind, woher sollten dann die Daten kommen?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Clientdataset zwischen zwei Datenbankservern wechseln

  Alt 27. Nov 2014, 08:31
Aus dem Clientdataset? Die SQLQuery wird doch nur kurz vom Clientdataset geöffnet, um die Daten einzulesen und dann wieder geschlossen.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Clientdataset zwischen zwei Datenbankservern wechseln

  Alt 27. Nov 2014, 08:46
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)
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Clientdataset zwischen zwei Datenbankservern wechseln

  Alt 27. Nov 2014, 09:30
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.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#8

AW: Clientdataset zwischen zwei Datenbankservern wechseln

  Alt 27. Nov 2014, 10:01
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.021 Beiträge
 
Delphi 12 Athens
 
#9

AW: Clientdataset zwischen zwei Datenbankservern wechseln

  Alt 27. Nov 2014, 10:26
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Clientdataset zwischen zwei Datenbankservern wechseln

  Alt 27. Nov 2014, 10:41
Ein EmptyDataset und Refresh bringen auf jeden Fall nix, grade getestet
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:24 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