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 1 von 2  1 2      
Cyberdine

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

3 Schichtversuch

  Alt 26. Mär 2013, 09:53
Hallo,
zuzeit befasse ich mit 3 Schichtarchitektur unter Delphi und bin da auf folgendes Problem gestoßen. Beim instanzieren des Mittleren und des untern DB(ADO)-Objekts kommt eine Fehlermeldung die besagt, dass ich Parameter bräuchte bei .Create obwohl ich garkeinen Konstruktor und somit keine Parameter implementiert habe.
Hier der Quelltext dazu

Delphi-Quellcode:

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    ADOQuery: TADOQuery;
    EditVVertragsNr: TEdit;
    LabelVVertragsNr: TLabel;
    LabelVEFDatum: TLabel;
    DTPVEFDatum: TDateTimePicker;
    ButtonVSuchen: TButton;
    procedure FormShow(Sender: TObject);
    procedure ButtonVSuchenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
  TVertrag = class(TForm1)
  private
    { Private-Deklarationen }
    iVertragsID : integer;
    sVertragsNummer : string;
    dErfasstAm : TDate;
  public
    { Public-Deklarationen }
    procedure SetVertragsNummer(VNr : string);
    procedure SetErfasstAm(EfDate : TDate);
    function GetVertragsNummer : string;
    function GetErfasstAm : TDate;
  end;

type TDBVertrag = class(TVertrag)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    function Suchen(qry : TADOQuery) : boolean; Overload;
end;

var
  Form1: TForm1;
  Vertrag : TVertrag;
  DBVertrag : TDBVertrag;

implementation

{$R *.dfm}

{ TVertrag }

// Vertragsdatum für die GUI-Schicht auslesen
function TVertrag.GetErfasstAm: TDate;
begin
  GetErfasstAm := dErfasstAm;
end;

// Vertragsnummer für die GUI-Schicht auslesen
function TVertrag.GetVertragsNummer: string;
begin
  GetVertragsNummer := sVertragsNummer;
end;

// Vertragsdatum in der Mittelschicht eintragen
procedure TVertrag.SetErfasstAm(EfDate: TDate);
begin
  dErfasstAm := EfDate;
end;

// Vertragsnummer in der Mittelschicht eintragen
procedure TVertrag.SetVertragsNummer(VNr: string);
begin
  sVertragsNummer := VNr;
end;

{ TDBVertrag }

// ADO - Vertrag suchen
function TDBVertrag.Suchen(qry: TADOQuery): boolean;
var
  statement : string;
  bcheck : boolean;
begin
  bcheck := true;
  with qry do
  begin
    Close;
    SQL.Clear;
    statement := 'select * from VERTRAG order by ERFASSTAM asc';
    SQL.Text := statement;
  end;
  qry.ExecSQL;
  DMAdo.ADOConnection.BeginTrans;
  DMAdo.ADOConnection.CommitTrans;
  qry.Open;
  exit(true);
end;

// 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;

// Hauptformular laden
procedure TForm1.FormShow(Sender: TObject);
var
  bError : boolean;
  sVerbindungsString : string;
begin
  DMAdo := sVerbindungsString;
  try
    if(DMAdo.ADOConnection.Connected) then
      Exit;

    DMAdo.ADOConnection.Open;
  except // Benutzername oder Passwort nicht korrekt
    bError := False;
  end;
  ADOQuery.Connection := DMAdo.ADOConnection;

  Vertrag := TVertrag.Create();
  DBVertrag := TDBVertrag.Create();
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 09:57
Hallo,

Ganz einfach: Leite deinen TVertrag nicht von TForm1 ab.
Das macht einfach überhaupt keinen Sinn. Daher hast du auch den constructor von TForm geerbt.

Einfach

TVertrag = class(TForm1) in

TVertrag = class ändern
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#3

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 11:09
Ich weiß jetzt auch nicht so genau, ob das das eine 3-Schicht Architektur ist (3-Tier). So wie ich das verstanden habe, sind die Schichten so aufgeteilt
1. Datenbank
2. Applikationsserver mit Mittelschicht, der sich mit der/den Datenbanken verbindet
3. Client, die die Daten von der 2.Schicht abholen und dorthin zurück schicken

Jedenfalls hab ich das immer so programmiert und das als 3-Tier verkauft.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 11:10
Irgendwie ist das aber kein 3-Schichten-Modell sondern MVC (Model-View-Controller) bzw. MVVM (Model-View-ViewModel)

Ich weiß jetzt auch nicht so genau, ob das das eine 3-Schicht Architektur ist (3-Tier). So wie ich das verstanden habe, sind die Schichten so aufgeteilt
1. Datenbank
2. Applikationsserver mit Mittelschicht, der sich mit der/den Datenbanken verbindet
3. Client, die die Daten von der 2.Schicht abholen und dorthin zurück schicken

Jedenfalls hab ich das immer so programmiert und das als 3-Tier verkauft.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#5

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 11:33
Ich weiß jetzt auch nicht so genau, ob das das eine 3-Schicht Architektur ist (3-Tier). So wie ich das verstanden habe, sind die Schichten so aufgeteilt
1. Datenbank
2. Applikationsserver mit Mittelschicht, der sich mit der/den Datenbanken verbindet
3. Client, die die Daten von der 2.Schicht abholen und dorthin zurück schicken

Jedenfalls hab ich das immer so programmiert und das als 3-Tier verkauft.
Und ich dachte immer, dass das eine normale old schoolige Client-Server-Architektur ist...also kann ich an sowas 3-Tier-Architektur dran kleben?
Weil das hört sich schon viel weniger altbacken an als Client-Server-Architektur.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#6

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 11:37
Irgendwie ist das aber kein 3-Schichten-Modell sondern MVC (Model-View-Controller) bzw. MVVM (Model-View-ViewModel)
???
Alles ohne Interfaces und mit globalen Variablen in einer Unit?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 11:37
Ich weiß jetzt auch nicht so genau, ob das das eine 3-Schicht Architektur ist (3-Tier). So wie ich das verstanden habe, sind die Schichten so aufgeteilt
1. Datenbank
2. Applikationsserver mit Mittelschicht, der sich mit der/den Datenbanken verbindet
3. Client, die die Daten von der 2.Schicht abholen und dorthin zurück schicken

Jedenfalls hab ich das immer so programmiert und das als 3-Tier verkauft.
Und ich dachte immer, dass das eine normale old schoolige Client-Server-Architektur ist...also kann ich an sowas 3-Tier-Architektur dran kleben?
Weil das hört sich schon viel weniger altbacken an als Client-Server-Architektur.
Eine 3-Schicht-Architektur ist auch eine Client-Server-Architektur.
Eine Client-Server-Architektur ist aber nicht auch automatisch eine 3-Schicht-Architektur
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 11:38
Irgendwie ist das aber kein 3-Schichten-Modell sondern MVC (Model-View-Controller) bzw. MVVM (Model-View-ViewModel)
???
Alles ohne Interfaces und mit globalen Variablen in einer Unit?
OK, ich hätte wohl eher schreiben sollen
Zitat:
... der Versuch ...


Aber das stand ja schon im Titel
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#9

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 11:58
OK, ich hätte wohl eher schreiben sollen
Zitat:
... der Versuch ...


Aber das stand ja schon im Titel
Es wird einem mit Delphi auch nicht leicht gemacht. Wäre es sinnvoll Muster/Demo Projekte für derartige Design Pattern in der CodeLib zur Verfügung zu stellen?
MVC, MVP, MVVM,...
Und eine Muster Projektgruppe für eine 3 Schicht Architektur?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (26. Mär 2013 um 12:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: 3 Schichtversuch

  Alt 26. Mär 2013, 12:03
OK, ich hätte wohl eher schreiben sollen
Zitat:
... der Versuch ...


Aber das stand ja schon im Titel
Es wird einem mit Delphi auch nicht leicht gemacht. Wäre es sinnvoll Muster/Demo Projekte für derartige Design Pattern in der CodeLib zur Verfügung zu stellen?
MVC, MVP, MVVM,...
Und eine Muster Projektgruppe für eine 3 Schicht Architektur?
Nun es wird nicht unbedingt erschwert, aber der RAD Ansatz verleitet halt den Weg des geringsten Wiederstands zu gehen

Sinnvoll und wünschenswert wäre sowas durchaus
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 18:47 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