Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Übergabe der Connection (https://www.delphipraxis.net/193544-uebergabe-der-connection.html)

Sidi61 13. Aug 2017 22:08

Datenbank: MySQL • Version: 5.7.11 • Zugriff über: MyDac

Übergabe der Connection
 
Hallo zusammen,

ich habe mehrere Units die ich in verschiedenen Programmen nutze, ich habe noch keine Lösung gefunden die Connection der Haupt-Form an die Units zu übermitteln.

Ich verwende MyDac für die Verbindung zur Datenbank. Auf der Haupt-Form wird TMyConnection und TMyConnectDialog plaziert. In allen anderen Units mit Datenbankverbindung wird die Haupt-From in die Uses aufgenommen und es kann dann die Connection in TMyQuery eingebunden werden.

Und hier habe ich ein Problem da die Haupt-Form immer eine andere ist. Möchte ich ein Programm kompilieren müsste ich jedes Mal die Units anpassen :wall:

Wie macht ihr das? Gibt es hier eine elegante Lösung??

Gruß
Sidi

himitsu 13. Aug 2017 22:21

AW: Übergabe der Connection
 
Erstmal, warum liegt die Connection auf der Hauptform und nicht z.B. auf einem Datenmodul, welches jede Unit kennt?

Andererseits kann man sich auch fragen, warum überhaupt jeder etwas Globales kennen muß, anstatt er es am Anfang, bzw. bei Aufruf, übergeben bekommt?
Vorallem wenn man daran denkt, dass man Units/Module in mehreren Programmen verwendet und auch in Hinblick auf Wartbarkeit und Testbarkeit.

Sidi61 13. Aug 2017 22:31

AW: Übergabe der Connection
 
Zitat:

Zitat von himitsu (Beitrag 1378672)
Erstmal, warum liegt die Connection auf der Hauptform und nicht z.B. auf einem Datenmodul, welches jede Unit kennt?

Andererseits kann man sich auch fragen, warum überhaupt jeder etwas Globales kennen muß, anstatt er es am Anfang, bzw. bei Aufruf, übergeben bekommt?
Vorallem wenn man daran denkt, dass man Units/Module in mehreren Programmen verwendet und auch in Hinblick auf Wartbarkeit und Testbarkeit.

In der Entwicklungsphase ist es natürlich praktisch wenn MyQuery mit der Connection des Haupt-form verbunden ist da dann die felder bequem ausgewählt werden können. In Wieweit das mit einem Datenmodul funktioniert habe ich noch nicht ausprobiert, kann das die gleiche Funktionaltät während der Entwicklung haben?

Gruß
Sidi61

himitsu 13. Aug 2017 23:17

AW: Übergabe der Connection
 
Das Datenmodul ist natürlich auch zur Designtime verfügbar. (außer man erstellt es erst zu Laufzeit "manuell").

Und es verbietet dir niemand, dass du im Formdesigner eine Debugconnection verwendets und zur Laufzeit eine andere Connection angehangen wird.
Da kann dann auch jedes Modul seine eigene Connection besitzen (im Formdesigner) und muß dort noch keine globale Connection kennen.

Man darf sich da auch gern eine eigene Connection-Klasse ableiten, wo man in der IDE nur einmal die Verbindungsdaten zum Entwicklungdatenbankserver einrichtet.

Sidi61 13. Aug 2017 23:33

AW: Übergabe der Connection
 
Das mit dem Datenmodul würde grundsätzlich funktionieren, nur beim Kompilieren hagelt es Fehlermeldungen wegen fehlender Datenbankverbindung noch bevor ein Form sichtbar wird.

Liegt TMyConnection und TMyConnectDialog auf der Hauptform wird MyConnectDialog automatisch aufgerufen.

Wie kann ich bei Verwendung eines Datenmoduls nun die Connection erzeugen bevor die Forms erzeugt werden??

Gruß
Sidi61

olaf 14. Aug 2017 04:53

AW: Übergabe der Connection
 
Hallo,

lass Dir den Quelltext anzeigen und ändere die Reihenfolge der Erzeugung Deiner Forms. Das Datenmodul muss als erstes erzeugt werden.

Olaf

p80286 14. Aug 2017 07:43

AW: Übergabe der Connection
 
Zitat:

Zitat von Sidi61 (Beitrag 1378673)
In der Entwicklungsphase ist es natürlich praktisch wenn MyQuery mit der Connection des Haupt-form verbunden ist da dann die felder bequem ausgewählt werden können.

Das klingt sehr nach einem dieser Programme, die falls sie ihre Datenbank nicht erreichen, sang und klanglos oder aber mit irreführender Fehlermeldung abrauchen.

Nachdem ein rudimentäres "Startformular" erstellt wurde, sollte ein Programm seine Datenbank suchen, und im Fehlerfall eine aussagekräftige Meldung ausgeben.

Alles was in diesem Zusammenhang "Auto" ist, sollte man tunlichst meiden.

Edith:
Warum interessieren sich Deine Units überhaupt für die Datenbank?
Die Routinen eines Datamodules liefern die notwendigen Daten, egal woher sie kommen. Dem Restprogramm kann es schließlich egal sein woher sie kommen.

Gruß
K-H

hoika 14. Aug 2017 10:21

AW: Übergabe der Connection
 
Hallo,
wir haben alle mal angefangen mit einer TTable auf dem Formular ...
Also bitte nicht sofort auf ihn draufhauen, wer er etwas eurer Meinung suboptimales macht.

Zitat:

In der Entwicklungsphase ist es natürlich praktisch wenn MyQuery mit der Connection des Haupt-form verbunden ist da dann die felder bequem ausgewählt werden können.

Ich würde im OnCreate des DataModuls einfach Connection.Active=False setzen.

Ausserdem würde ich alle Forms ausser dem Hauptform dynamisch erstellen, das wäre aber schon der nächste Thread.

p80286 14. Aug 2017 13:45

AW: Übergabe der Connection
 
Zitat:

Zitat von hoika (Beitrag 1378684)
Hallo,
wir haben alle mal angefangen mit einer TTable auf dem Formular ...
Also bitte nicht sofort auf ihn draufhauen, wer er etwas eurer Meinung suboptimales macht.

Ist ja nicht bös' gemeint. Nur erleben wir ja hier oft genug, daß auch gestandene Programmierer sich von RAD zu etwas suboptimalen Konstrukten hinreißen lassen, und dann vor ähnlichen Problemen wie der TE stehen. Für Quick'n Dirty reicht das, keine Frage, aber wenn man ernst macht, dann stößt man leicht an die Grenzen.

Gruß
K-H

Sidi61 14. Aug 2017 21:59

AW: Übergabe der Connection
 
[QUOTE=p80286;1378678
Edith:
Warum interessieren sich Deine Units überhaupt für die Datenbank?
Die Routinen eines Datamodules liefern die notwendigen Daten, egal woher sie kommen. Dem Restprogramm kann es schließlich egal sein woher sie kommen.

Gruß
K-H[/QUOTE]

Weil z.B. ein Kassenbuch das in verschiendenen Anwendungen verwendet werden soll und aus mehreren Forms besteht wie Kontenramen, Auswertdialog, MwSt Tabellen, Kontogruppen usw. am Ende doch sehr umfangreich ist aber alle Datenbank Routinen und Einstelldaten beinhalten soll, nicht die Datenbank Funktionalität an ein Datenmodul abgeben kann sonst habe ich am Ende für jede Thema ein eigenes Datenmodul.

Das mit dem Auslagern der TMyConnection in ein Datenmodul war schon der richtige Ansatz, ich muss jetzt eben meine Angewohnheiten ein wenig ändern und die Datei nicht mehr in der OnCreate öffnen sondern nachdem alle Formulare erzeugt sind von der Hauptanwendung aus - dann müsste es klappen, und was ich mache wenn es nicht klappt das sehe ich dann wenn es nicht klappt, das klappt immer :thumb:

Danke für eure Hilfe

Gruß
Sidi


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