AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten
Thema durchsuchen
Ansicht
Themen-Optionen

Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

Ein Thema von Der schöne Günther · begonnen am 28. Okt 2013 · letzter Beitrag vom 29. Okt 2013
Antwort Antwort
Seite 2 von 2     12   
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

  Alt 29. Okt 2013, 12:38
Wenn Du eine Single User Anwendung mit lokaler DB hast, ist doch alles sehr übersichtlich. Du hast in einer "normalen" Anwendung idR ein Connection Object. Da hängen alle DB Komponenten dran. Wenn die Connection getrennt wird, sind alle DB Kompos "abgeschnitten".
Ganz genau!

Wahrscheinlich verleitet mich Delphi gerade zum Schlampen, denn genau das habe ich nicht mehr beibehalten. Connection und Query-Objekt auf Form/Frame werfen und das mit Grids, Charts und sonstwas direkt schön visualisieren. So habe ich locker schonmal zwei, drei Readonly-Verbindungen auf meine Datenbank. Verbindungen, die fest mit meiner Oberfläche verdrahtet sind.

Die Anwendungslogik dahinter weiß von diesen Verbindungen nichts. Und will sie jetzt finden um sie auszuknipsen.

Ziemlich blöd gelöst, oder? Irgendwie ging mir schon einer dabei ab, auf dem Formular-Designer schon den DB-Inhalt sehen zu können. Aber ich komme immer mehr zum Schluss, dass man es lieber "ordentlich" und alles über ein Verbindungsobjekt laufen lassen sollte...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#12

AW: Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

  Alt 29. Okt 2013, 13:02
Irgendwie ging mir schon einer dabei ab, auf dem Formular-Designer schon den DB-Inhalt sehen zu können. Aber ich komme immer mehr zum Schluss, dass man es lieber "ordentlich" und alles über ein Verbindungsobjekt laufen lassen sollte...
Das schließt sich ja nicht aus. Du kannst das eine (einzige?) Verbindungsobjekt ja in ein Datenmodul packen, das du dann bei den jeweiligen Forms in die uses-clause schreibst. Wenn das Datenmodul dann in der IDE geöffnet ist, kannst du den DataSets dieses Verbindungsobjekt zuweisen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

  Alt 29. Okt 2013, 13:30
Fast! Ganz reichen meine Fähigkeiten leider nicht aus: Der Formular-Designer findet problemlos eine Verbindungs-Komponente die man auf ein ganz anderes Formular geworfen hat. Aber leider nur über die globale "Form2"-Variable.

Oder bezeichnet "Datenmodul" etwas, das ich nicht kenne?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#14

AW: Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

  Alt 29. Okt 2013, 13:34
http://docwiki.embarcadero.com/Libra...es.TDataModule
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

  Alt 29. Okt 2013, 14:05
Gut, dass ich nochmal nachgefragt habe
Das sehe ich zum ersten mal. Und es sieht sehr, sehr vielversprechend aus.

Zitat:
Wenn Sie (...) vorhaben, Gruppen von Datenbank- und Systemobjekten wiederzuverwenden, oder wenn Sie die Teile Ihrer Anwendung isolieren wollen, die die Verbindung zu Datenbanken einrichten und Business-Regeln implementieren, stellen Datenmodule ein praktisches Werkzeug für die Organisation dar.
Nach Frames die zweite große tolle Entdeckung im Stil von "Hätte ich das doch nur früher mal entdeckt"...

Eine Sache noch: Um das Verkoppeln von bsp. einem TDBGrid mit etwas von einem Datenmodul (oder anderen Formular oder Frame) komme ich aber anscheinend um diese blöde globale Variable nicht drum herum, oder? Papa sagt, globale Variablen seien böse.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#16

AW: Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

  Alt 29. Okt 2013, 14:12
Über irgend etwas musst du den Container ja referenzieren, und die globale Form-/DM-Variable ist ja schon von der IDE als "The correct Delphi way" vorgegeben. Ich habe mich aus praktischen Gründen damit abgefunden diese als letzte Vertreter ihrer Art zu tolerieren. (Ausser bei Formularen, die ich nur dynamisch instanziere.) Andere Lösungen (so es sie denn gibt) würden sehr wahrscheinlich auch nicht so einfach von der IDE unterstützt, so dass der Nutzen des Ganzen wieder fraglich wäre.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#17

AW: Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

  Alt 29. Okt 2013, 14:25
Ich würde das hier auch rein pragmatisch sehen. Wenn du in der IDE die Live-Verbindung zur Datenbank willst, kommst du um diesen Weg wohl nicht herum. Denk auch daran, das Datenmodul in die automatische Form-Erzeugung mit aufzunehmen (außer: siehe unten).

Es ist auch nicht wirklich die globale Variable, die Delphi da verwendet, sondern vielmehr die Instanz dieses Datenmoduls mit dem entsprechenden Namen ("Wozu haben Komponenten Namen?"). Beim Laden der Forms löst Delphi die Referenz auf das Datenmodul auf, indem es die Namen der Instanzen überprüft. Das Verbindungsobjekt sucht es dann über FindComponent innerhalb dieser Instanz.

Du kannst also problemlos zur Runtime selbst eine passende Instanz des Datenmoduls (vor den Forms) erstellen (den Namen bekommt es aus der DFM), das dann auch von den verschiedenen Forms verwendet wird. Die globale Variable kannst du dann auch entfernen. Es darf aber weiterhin nur eine Instanz dieses Datenmoduls geben - was aber ja auch der Sinn des ganzen ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

AW: Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

  Alt 29. Okt 2013, 14:32
Richtig, die Anwendung kompilierte zwar, konnte aber nicht starten, da in der Application.CreateForms -Reihenfolge das Datenmodul nach dem Formular kam.

Dann bedanke ich mich auf jeden Fall noch ganz anständig, denn insgesamt ist das, was ich die ganze Zeit wollte.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#19

AW: Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

  Alt 29. Okt 2013, 14:44
Es darf aber weiterhin nur eine Instanz dieses Datenmoduls geben - was aber ja auch der Sinn des ganzen ist.
Nicht zwingend ... ich lege oft komplette Business Objekte in ein Datenmodul und erzeuge das dann pro Anzeigeformular entsprechend. Das trennt dann die DB-Verbindung in mehrere, voneinaner unabhängige auf. Allerdings muss man dann peinlich darauf achten, wenn es um solche Tasks mit Exklusiv-Zugriff geht.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#20

AW: Exklusiver DB-Zugriff bei gleichzeitig DB-Komponenten

  Alt 29. Okt 2013, 16:00
Es darf aber weiterhin nur eine Instanz dieses Datenmoduls geben - was aber ja auch der Sinn des ganzen ist.
Nicht zwingend ...
In diesem Fall schon. Es ging darum, eine zentrale Stelle zu schaffen, über die man an die aktuell aktiven DataSets kommen kann. Meine Aussage sollte natürlich nicht bedeutet, daß es generell immer nur eine Instanz dieses Datenmoduls respektive nur eine Verbindung zur Datenbank geben darf.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

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 11:45 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