AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datasource/Table global?

Datasource/Table global?

Ein Thema von NoGAD · begonnen am 2. Feb 2021 · letzter Beitrag vom 2. Feb 2021
Antwort Antwort
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
325 Beiträge
 
Delphi 10.4 Sydney
 
#1

Datasource/Table global?

  Alt 2. Feb 2021, 02:07
Datenbank: ABS_Database • Version: 7.92 • Zugriff über: ABSTable
Hallo,

ich habe mein kleines Projekt nun auf zwei VCL-Forms verteilt.

Wie spricht man in gutem Programmierstil die Datenbankobjekte an?

DataSource1 und Table1 auf das Hauptformular (Form1) und in Form2 das in die Uses mit aufnehmen, um dann im Code

Form1.DataSource1. ... anzusteuern?

LG Mathias
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.288 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datasource/Table global?

  Alt 2. Feb 2021, 05:49
Moin...
Zitat:
gutem Programmierstil
Guter Programmierstil ist neuerdings:
1. Die Logic von der Oberfläche zu trennen. In die Logic gehört auch der Zugriff auf die Datenbank.
2. keine datenbankensitiven Komponenten mehr benutzen...

Vorschlag 1:


Form - Unit Logic - Datamodule/Interface/Unit für den Zugriff
Jeder kennt sein "Kind". Die Form kennt die Logic. Die Logic kennt den Zugriff. Rückwärts laufen die Informationen über Events.


Vorschlag 2:

Klassisch: Form - Datamodule



Zitat:
Form1.DataSource1
Bitte verwende vernünftige Namen... Auch wenn es schwer ist die automatische Vergebung nochmal zu ändern. PS: Dafür gibt es Tools, die nach dem Plazieren anbieten den Namen zu ändern...mit Präfix. (CnPack)

Geändert von haentschman ( 2. Feb 2021 um 06:02 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Datasource/Table global?

  Alt 2. Feb 2021, 07:33
Moin...
Zitat:
gutem Programmierstil
Guter Programmierstil ist neuerdings:
1. Die Logic von der Oberfläche zu trennen. In die Logic gehört auch der Zugriff auf die Datenbank.
Nope. die (Fach)Logik des Programms gehört (wenn schon) in einen Bereich, der weder von Oberflächenkomponenten noch von Datenbankzugriffen "verseucht" ist, damit der testbar ist.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.288 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datasource/Table global?

  Alt 2. Feb 2021, 07:46
Zitat:
die (Fach)Logik des Programms gehört (wenn schon) in einen Bereich, der weder von Oberflächenkomponenten noch von Datenbankzugriffen "verseucht"
...ich meinte erst mal nicht auf die Form!
Zitat:
Form - Unit Logic - Datamodule/Interface/Unit für den Zugriff
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.174 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Datasource/Table global?

  Alt 2. Feb 2021, 07:59
2. keine datenbankensitiven Komponenten mehr benutzen...
Oft behauptet, aber wenig wahr. Es stimmt, alles auf ein Form zu klatschen von TdbEdit bis hin zur DB-Verbindung ist nicht so gut (aber auch da gibt es Ausnahmen). Letztlich ´gibt es diese Layer:
- visuelle Darstellung, UI
- Validierung (die trenne ich noch gern in UI bezogene + Business Validierung)
- Business Logic
- Datenbereitstellung

Wenn man das vernünftig trennt, spricht - für mich - nichts gegen datensensitive Controls.
  Mit Zitat antworten Zitat
RSF

Registriert seit: 13. Mär 2008
150 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Datasource/Table global?

  Alt 2. Feb 2021, 08:22
Wenn man das vernünftig trennt, spricht - für mich - nichts gegen datensensitive Controls.
So sehe ich das auch.
Ronald
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
325 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Datasource/Table global?

  Alt 2. Feb 2021, 16:01
Danke für eure Anregungen.

Kleine Rückfrage:

Wenn ich in einer Form ein Objekt dynamisch, also während der Laufzeit erstelle, gehört das dann doch in den Kontext der Form.

Erstelle ich das jedoch in einer eigenen Unit, wird es ein Globales Objekt.

Nun wird mir immer wieder erklärt, dass Globale Variablen/Objekte usw. ganz teuflisch und absolut böse sind. Warum ist das in diesem Fall dann anders?


Zitat:
Form1.DataSource1
Bitte verwende vernünftige Namen... Auch wenn es schwer ist die automatische Vergebung nochmal zu ändern. PS: Dafür gibt es Tools, die nach dem Plazieren anbieten den Namen zu ändern...mit Präfix. (CnPack)
Das war doch nur ein Beispiel. (augenroll)

LG Mathias
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Datasource/Table global?

  Alt 2. Feb 2021, 16:29
Nun wird mir immer wieder erklärt, dass Globale Variablen/Objekte usw. ganz teuflisch und absolut böse sind. Warum ist das in diesem Fall dann anders?
Globale Variablen sind kein Teufelswerk, können aber Fehler provozieren.

Mal ein ganz schlechtes Beispiel:
Du hast eine globale Variable I, und speicherst dort Deinen Kontostand.
In irgendeiner Methode lässt Du eine Schleife von 0 bis 1000 laufen und benutzt die Schleifenvariable I.
Du hast aber vergessen, die lokale Variable I anzulegen, so dass Deine Kontovariable von 0 bis 1000 erhöht wird.
Ob das jetzt gut oder schlecht ist, musst Du selbst entscheiden.

Also man muss ggf. aufpassen, dass man globale Variablen vernünftig nutzt, dann ist eigentlich nichts dagegen einzuwenden. Es kann aber auch schnell mal was dabei schief gehen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
325 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Datasource/Table global?

  Alt 2. Feb 2021, 16:36
Nun wird mir immer wieder erklärt, dass Globale Variablen/Objekte usw. ganz teuflisch und absolut böse sind. Warum ist das in diesem Fall dann anders?
Globale Variablen sind kein Teufelswerk, können aber Fehler provozieren.

Mal ein ganz schlechtes Beispiel:
Du hast eine globale Variable I, und speicherst dort Deinen Kontostand.
In irgendeiner Methode lässt Du eine Schleife von 0 bis 1000 laufen und benutzt die Schleifenvariable I.
Du hast aber vergessen, die lokale Variable I anzulegen, so dass Deine Kontovariable von 0 bis 1000 erhöht wird.
Ob das jetzt gut oder schlecht ist, musst Du selbst entscheiden.

Also man muss ggf. aufpassen, dass man globale Variablen vernünftig nutzt, dann ist eigentlich nichts dagegen einzuwenden. Es kann aber auch schnell mal was dabei schief gehen.

Danke
Mathias
  Mit Zitat antworten Zitat
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 01:27 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