AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firedac: Öffnen einer ADS-DB dauert ewig
Thema durchsuchen
Ansicht
Themen-Optionen

Firedac: Öffnen einer ADS-DB dauert ewig

Offene Frage von "oltrop"
Ein Thema von oltrop · begonnen am 28. Sep 2022 · letzter Beitrag vom 30. Sep 2022
 
oltrop

Registriert seit: 24. Okt 2003
14 Beiträge
 
#1

Firedac: Öffnen einer ADS-DB dauert ewig

  Alt 28. Sep 2022, 12:02
Datenbank: Advantage Database • Version: 12 • Zugriff über: Firedac
Hallo Zusammen,

ich arbeite hauptsächlich mit Delphi XE und bin jetzt bei Delphi 11 gelandet.
Ich möchte eine ADS-Tabele (Advantage Database Server) mit Firedac öffnen.

Nach dem Öffnen läuft die Eieruhr eine Ewigkeit. Ist die Tabelle zu groß,
kommt auch ein Memory-Fehler. Eigentlich soll er einfach, wie früher, die DB
öffnen und z.B. in einem DBGrid die ersten Zeilen anzeigen.

Wie muss ich das machen?

Da wir demnächst auf eine PostgreSQL-DB umstellen bin ich etwas am testen.
Ich habe 2 FDConnection Objekte (Eine für ADS und eine für PG)
Verbinde ich nun meine TFDTable zuerst mit der PG Datenbank. Wird diese
schnell geöffnet. Verbinde ich danach die ADS mit der FDTable, wird
diese auch ruckzuck geöffnet.

Öffne ich zuerst die ADS, dauert es ewig.

Ich habe euch hier mal den Code mit gepostet. Dann wird es vielleicht etwas deutlicher

Delphi-Quellcode:
  // checked = ADS benutzen, sonst PostgreSQL
  if checkBox1.Checked then
  begin
   // vor ADS, erstmal PostgreSQL öffnen
   // So funktioniert das öffnen der ADS zügig
   // Lasse ich diese If-Struktur weg,
   // liest er sich die komplette ADS-Tabelle ein.
   if DM1.FDTAdressen.Connection = NIL then
   begin
     DM1.FDTAdressen.Close;
     DMStart.FDConADS.Connected := False;
     DMStart.FDConPG.Connected := True;
     DM1.FDTAdressen.Connection := DMStart.FDConPG;
     DM1.FDTAdressen.TableName := 'v2ad1001';
     DM1.FDTAdressen.Open;
   end;
   // jetzt ADS öffnen
   DM1.FDTAdressen.Close;
   DMStart.FDConPG.Connected := False;
   DMStart.FDConADS.Connected := True;
   DM1.FDTAdressen.Connection := DMStart.FDConADS;
   DM1.FDTAdressen.TableName := 'Adressen\V2AD1001';
   DM1.FDTAdressen.Open;
  end
  else begin
   // PostgreSQL öffnen
   DM1.FDTAdressen.Close;
   DMStart.FDConADS.Connected := False;
   DMStart.FDConPG.Connected := True;
   DM1.FDTAdressen.Connection := DMStart.FDConPG;
   DM1.FDTAdressen.TableName := 'v2ad1001';
   DM1.FDTAdressen.Open;
  end;
  Mit Zitat antworten Zitat
 


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 09:30 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