Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TADOConnection auf anderem Datenmodul wie TADOQuery (https://www.delphipraxis.net/182991-tadoconnection-auf-anderem-datenmodul-wie-tadoquery.html)

HolgerCW 2. Dez 2014 14:16

Datenbank: Oracle • Version: 10 • Zugriff über: ADO

TADOConnection auf anderem Datenmodul wie TADOQuery
 
Hallo zusammen,

will mich gerade von meiner BDE lösen und versuche mich jetzt gerade mit TADO ...

Ich habe die TADOConnection auf dem Datenmodul_1
Die TADOQuery liegt auf Datenmodul_2.
Der TADOQuery habe ich auch die Connection von Datenmodul_1 zuweisen können. Die Verbindung ist auch hergestellt da ich die Felder hinzufügen konnte.

Wenn ich im Programm aber jetzt TADOQuery.Open mache kommt die Meldung das eine Connection oder Connectionstring fehlt.

Packe ich jetzt beide auf das gleiche Datenmodul klappt es.

Möchte aber nicht auf jedem Datenmodul eine Connection haben. Woran könnte es liegen ?

In den uses des Datenmodul_2 ist auch das Datenmodul_1 eingetragen.

Gruss

Holger

p80286 2. Dez 2014 14:40

AW: TADOConnection auf anderem Datenmodul wie TADOQuery
 
Zitat:

Zitat von HolgerCW (Beitrag 1281985)

Möchte aber nicht auf jedem Datenmodul eine Connection haben. Woran könnte es liegen ?

Und warum nicht? ich habe für jede unterstützte DB falls notwendig ein eigenes Datenmodul, das war's dann.
teilweise mit 2 oder 3 connections, bisher hatte ich keine Probleme das zu handhaben.

Gruß
K-H

HolgerCW 2. Dez 2014 14:47

AW: TADOConnection auf anderem Datenmodul wie TADOQuery
 
Vorher mit den TDatabase-Komponenten hat das aber super funktioniert.

Ich habe in einem anderen Projekt festegestellt das wenn ich umso mehr Connections habe die Programme langsamer werden, da jedes Programm dann mehrere Connections gleichzeitig bedient und das mal die Anwender die das Programm nutzen.

Gibt es denn eine Idee wie ich die TQADOQuery auf ein anderes Datenmodul packen kann wie die TADOConnection ?

Gruss

Holger

p80286 2. Dez 2014 15:27

AW: TADOConnection auf anderem Datenmodul wie TADOQuery
 
Zitat:

Zitat von HolgerCW (Beitrag 1281992)
Ich habe in einem anderen Projekt festegestellt das wenn ich umso mehr Connections habe die Programme langsamer werden, da jedes Programm dann mehrere Connections gleichzeitig bedient und das mal die Anwender die das Programm nutzen.

Deine Programme machen was sie wollen?
Aber im Ernst, eine Connection,eine Query fertig.

Manchmal braucht man noch eine zweite oder dritte (Connection/Query) aber das ist zumindestens für mich seehr selten.

Gruß
K-H

Dejan Vu 2. Dez 2014 15:43

AW: TADOConnection auf anderem Datenmodul wie TADOQuery
 
Ich würde mal annehmen, in deinem Projekt wird erst das Datenmodul erzeugt, das die Query hat. Nun steht in der DFM unter Connection 'Module2.myADOConnection'... Aber 'Module2' gibt es ja noch nicht. Ergo steht da nun null drin.


Abhilfe: Setzte die Connection-Eigenschaft explizit. Ist eh besser, weil Du irgendwann ja doch die Einstellung verlierst (beim rumeditieren)

HolgerCW 3. Dez 2014 07:14

AW: TADOConnection auf anderem Datenmodul wie TADOQuery
 
Es ist genau umgekehrt.

Das Datenmodul mit der Connection ist von Anfang an da. Die einzelnen Datenmodule mit den entsprechenden Querys werden je nach Nutzung nachgeladen.

Muss ich da eventuell noch was auf Aktiv setzen ?

Aber warum ging das mit der BDE und den TQuerys ohne Probleme ? Habe ja jetzt nur testweise eine neue ADOConnection und eine neue TADOQuery dazu erstellt. Alles andere mit der BDE läuft weiterhin.

Gruss

Holger

Dejan Vu 3. Dez 2014 07:28

AW: TADOConnection auf anderem Datenmodul wie TADOQuery
 
Wie erstellst Du die Instanzen?

Aber das ist doch eigentlich nebensächlich. Setze die Verknüpfung explizit (was sowieso 1000x besser ist) und widme dich dem nächsten Problem.. ;-)

HolgerCW 3. Dez 2014 07:36

AW: TADOConnection auf anderem Datenmodul wie TADOQuery
 
Du meinst also ich soll den Connection String direkt in die Query setzen ?

Nur wäre dann bei der Auswahl eines Testservers die Notwendigkeit das ich allen Querys den neuen Server mitteilen muss und nciht nur einer. Gehen würde das, aber ist halt auch aufwendig und muss ich bei Erweiterungen des Programms auch immer dran denken.

Wenn der Anwender einen bestimmten Programmteil benutzen will, create ich nur die entsprechende Form und das entsprechende Datenmodul mit den dazugehörigen Querys. Das Datenmodul mit der Connection ist aber immer erstellt. Wenn der Anweder einen anderen Programmteil nutzen möchte werden die wieder mit freeandnil gekillt und die neuen erstellt.

Gruss

Holger

HolgerCW 3. Dez 2014 07:42

AW: TADOConnection auf anderem Datenmodul wie TADOQuery
 
Habe gerade was herrausgefunden.

Wenn ich bei erstellen des Datenmoduls die Connection nochmal explizit zuweise klappt es:

Delphi-Quellcode:
procedure TDM_Systemoptionen.DataModuleCreate(Sender: TObject);
begin

 inherited;
 DM_Systemoptionen := Self;

 ADOQueryTreeView.Connection := DM_Menu.ADO_Con_SYSDBP;

end;
Aber warum muss ich das tuen ?

Gruss

Holger

Sir Rufo 3. Dez 2014 07:43

AW: TADOConnection auf anderem Datenmodul wie TADOQuery
 
Nur so als Beispiel
Delphi-Quellcode:
TADODataModule = class( TDataModule )
public
  procedure SetConnection( AConnection : TADOConnection );
end;

procedure TADODataModule.SetConnection( AConnection : TADOConnection );
var
  LIdx : Integer;
begin
  for Lidx := 0 to ComponentCount - 1 do
    if Components[LIdx] is TCustomADODataSet then
      ( Components[Lidx] as TCustomADODataSet ).Connection := AConnection;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 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