Einzelnen Beitrag anzeigen

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