AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Übergabe der Connection

Ein Thema von Sidi61 · begonnen am 13. Aug 2017 · letzter Beitrag vom 8. Sep 2017
Antwort Antwort
Seite 1 von 2  1 2   
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#1

Übergabe der Connection

  Alt 13. Aug 2017, 23:08
Datenbank: MySQL • Version: 5.7.11 • Zugriff über: MyDac
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

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

Gruß
Sidi
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#2

AW: Übergabe der Connection

  Alt 13. Aug 2017, 23:21
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (13. Aug 2017 um 23:23 Uhr)
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Übergabe der Connection

  Alt 13. Aug 2017, 23:31
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#4

AW: Übergabe der Connection

  Alt 14. Aug 2017, 00:17
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Übergabe der Connection

  Alt 14. Aug 2017, 00:33
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
  Mit Zitat antworten Zitat
olaf

Registriert seit: 4. Mai 2009
Ort: Iserlohn
82 Beiträge
 
RAD-Studio 2009 Pro
 
#6

AW: Übergabe der Connection

  Alt 14. Aug 2017, 05:53
Hallo,

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

Olaf
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Übergabe der Connection

  Alt 14. Aug 2017, 08:43
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (14. Aug 2017 um 08:47 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Übergabe der Connection

  Alt 14. Aug 2017, 11:21
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.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Übergabe der Connection

  Alt 14. Aug 2017, 14:45
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#10

AW: Übergabe der Connection

  Alt 14. Aug 2017, 22:59
[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

Danke für eure Hilfe

Gruß
Sidi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:05 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