AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

3 Schichtversuch

Ein Thema von Cyberdine · begonnen am 26. Mär 2013 · letzter Beitrag vom 30. Mär 2013
Antwort Antwort
Seite 2 von 2     12   
Cyberdine

Registriert seit: 21. Mai 2012
26 Beiträge
 
#11

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 15:54
Das Problem mit "getrennten" Schichten seh ich hier

Delphi-Quellcode:
// Button Vertrag suchen
procedure TForm1.ButtonVSuchenClick(Sender: TObject);
var
  stmp : string;
begin
  stmp := '';
  if (DBVertrag.Suchen(ADOQuery = true)) then
  begin
    stmp := ADOQuery.FieldByName('VERTRAGSNR').Value;
    Vertrag.SetVertragsNummer(stmp);
    EditVVertragsNr.Text := Vertrag.GetVertragsNummer;
  end;

end;
Da verschwimmen alle 3 Schichten zusammen aber eigentlich sollten alle 3 Schichten klar getrennt sein. Ich frage mich nur, wie trenn ich das jetzt sauber?
Irgendwie muß ja Die Vertragsnummer "sauber" von der DB (ADO) Schicht über die Mittelschicht zum Frontend kommen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 15:59
Wieso suchst Du nicht über die Vertrags-Klasse?

BTW: Bitte nicht mit true/false vergleichen, das ist ein immer wieder aufkommendes Thema.
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
Cyberdine

Registriert seit: 21. Mai 2012
26 Beiträge
 
#13

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 16:06
Also währe das so sauberer?

Delphi-Quellcode:
// Button Vertrag suchen
procedure TForm1.ButtonVSuchenClick(Sender: TObject);
begin
  Vertrag.Suchen;
  EditVVertragsNr.Text := Vertrag.GetVertragsNummer;
end;
Vertrag.Suchen leitet die Anfrage weiter an die DB(ADO)-Schicht, von dieser wird dann mit "Set" die Vertragsnummer im Objekt Vertrag aus der Query gesetzt(übertragen) und hier bei ButtonSuchen letztendlich an das Frontend weitergegeben.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 16:12
Japp. Die Präsentationsschicht kennt (im Idealfall) nur die Logikschicht und diese wiederum nur die Datenhaltungsschicht.
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
Cyberdine

Registriert seit: 21. Mai 2012
26 Beiträge
 
#15

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 16:18
Ok vielen Dank für die Info
  Mit Zitat antworten Zitat
Cyberdine

Registriert seit: 21. Mai 2012
26 Beiträge
 
#16

AW: 3 Schichtversuch

  Alt 30. Mär 2013, 15:12
Hallo,
hab mich mal weiter an den Feinheiten der OOP versucht und bin da auf folgendes gestoßen. Und zwar vererbe ich an die Logikschicht die DB-Zugriffsschicht, auf deren Methoden wie hier z.B. speichern nur die Logikschicht zugreifen kann. Damit die Methode der DB-Schicht nur für die Logikschicht sichtbar ist habe ich "strict protected" angewand (strict protected - hierauf kann man nur innerhalb der Klasse und ihrer Nachfahren zugreifen )
Allerdings kommt beim compilieren die Fehlermeldung das nicht auf "proteced Symbol Speichern" zugegriffen werden, die garnicht zu der Beschreibung paßt, da ja die Logikschicht der Nachfahre von TDBVertrag ist. Vorher hatte ich probiert die DB-Schicht als Nachfahren der Logikschicht anzugeben, aber das würde dann auch nicht zu der Beschreibung von strict protected paßen, da die Logikschicht auf eine Methode des Vorfahren zugreifen muß, damit die Daten in der DB-Schicht landen.

Code:
type
  TDBVertrag = class
  strict private
    { strict Private-Deklarationen }
    // Felder
    // Methoden
  strict protected
    { strict Protected-Deklarationen }
    // Felder
    // Methoden
    procedure Speichern(qry : TADOQuery); virtual;

  protected


  private
    { Private-Deklarationen }

  public
    { Public-Deklarationen }

  end;
  Mit Zitat antworten Zitat
Cyberdine

Registriert seit: 21. Mai 2012
26 Beiträge
 
#17

AW: 3 Schichtversuch

  Alt 30. Mär 2013, 15:32
Hab das Problem schon gefunden. Habe .Speichern direkt über die DB-Instanz aufgerufen anstatt über die geerbte Methode.
  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 21:50 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