DB-Handle an neus Formular übergeben

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

DB-Handle an neus Formular übergeben

Beitrag von niederrheiner »

Hallo an Alle,
im Hauptformulat <frmernaehrung1> habe ich eine mysql-db connected, <sqlquery1>. Nun möchte ich in einem Unterformular frm2 Zugriffe auf diese Datenbank machen.
Der Aufruf des Unterformulars erfolgt über die Menüleiste von <frmernaehrung1>. Im entsprechenden Menüpunkt steht die Anweisung

Code: Alles auswählen

PROCEDURE Tfrmernaehrung1.Mnurezquellenclick(Sender: Tobject);
BEGIN
  frmErfRezQuelle.Show;
End;
Das Unterformular wird angezeigt. Wie aber übergebe ich nun korrekt das DB-Handle <sqlquery1> bei diesem Aufruf?

bis dann ...
MfG
Günter

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: DB-Handle an neus Formular übergeben

Beitrag von Socke »

niederrheiner hat geschrieben:Das Unterformular wird angezeigt. Wie aber übergebe ich nun korrekt das DB-Handle <sqlquery1> bei diesem Aufruf?
Der beste Weg wäre wohl ein eigenes Datamodule für die Datenbankverbindung zu erstellen, dort die entsprechenden Komponenten ablegen und konfigurieren, und dieses dann in allen Formularen benutzen. Da musst du natürlich dafür sorgen, dass sich keine Transaktionen in die Quere kommen, aber das musst du so auch.
Zum einfachen Übergeben schaust du dir mal ein Delphi-Tutorial zu Eigenschaften (property) an, oder du schreibst dir eine Funktion.
Im Zweifelsfall benutzt du einfach zwei eigenständige Datenbankverbindungen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: DB-Handle an neus Formular übergeben

Beitrag von Bora4d »

Sockes Vorschlag übliche gängige Weg für DB-Anwendungen was auch möglich ist, du definierts im 2. Formular Sqlquery variable und setzt das vor dem aufruf mit vom 1.Formular so etwa:

Code: Alles auswählen

type
 TfrmErfRezQuelle = ..
  //bla bla ....
 public
  sqlquery2 : TSqlQuery;  // <-- Neu
end;
 
PROCEDURE Tfrmernaehrung1.Mnurezquellenclick(Sender: Tobject);
BEGIN
  frmErfRezQuelle.sqlquery2:=sqlquery1; // <-- Neu
  frmErfRezQuelle.Show;
End;

niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Re: DB-Handle an neus Formular übergeben

Beitrag von niederrheiner »

Socke hat geschrieben:
niederrheiner hat geschrieben:Das Unterformular wird angezeigt. Wie aber übergebe ich nun korrekt das DB-Handle <sqlquery1> bei diesem Aufruf?
Der beste Weg wäre wohl ein eigenes Datamodule für die Datenbankverbindung zu erstellen, dort die entsprechenden Komponenten ablegen und konfigurieren, und dieses dann in allen Formularen benutzen. Da musst du natürlich dafür sorgen, dass sich keine Transaktionen in die Quere kommen, aber das musst du so auch.
Zum einfachen Übergeben schaust du dir mal ein Delphi-Tutorial zu Eigenschaften (property) an, oder du schreibst dir eine Funktion.
Im Zweifelsfall benutzt du einfach zwei eigenständige Datenbankverbindungen.
Hallo Socke,
danke für Deine Antwort. Ich habe jetzt ersteinmal die Lösung von Bora4d genommen.

Bis dann ...
MfG
Günter

niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Re: DB-Handle an neus Formular übergeben

Beitrag von niederrheiner »

Bora4d hat geschrieben:Sockes Vorschlag übliche gängige Weg für DB-Anwendungen was auch möglich ist, du definierts im 2. Formular Sqlquery variable und setzt das vor dem aufruf mit vom 1.Formular so etwa:

Code: Alles auswählen

type
 TfrmErfRezQuelle = ..
  //bla bla ....
 public
  sqlquery2 : TSqlQuery;  // <-- Neu
end;
 
PROCEDURE Tfrmernaehrung1.Mnurezquellenclick(Sender: Tobject);
BEGIN
  frmErfRezQuelle.sqlquery2:=sqlquery1; // <-- Neu
  frmErfRezQuelle.Show;
End;
Hallo Bora4d,
danke für Deine Antwort. Habe Deinen Vorschlag umgesetzt und es klappt prima.

Bis dann ...
MfG
Günter

Antworten