AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language 2 Units zusammenfassen in eine Untergeordnete Logikschicht
Thema durchsuchen
Ansicht
Themen-Optionen

2 Units zusammenfassen in eine Untergeordnete Logikschicht

Ein Thema von Impulz · begonnen am 21. Dez 2011 · letzter Beitrag vom 23. Dez 2011
Antwort Antwort
Impulz

Registriert seit: 19. Aug 2011
Ort: Lübeck
68 Beiträge
 
Delphi 7 Professional
 
#1

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht

  Alt 21. Dez 2011, 12:59
Du vermischst Objekte, die eigentlich nichts (direkt) mit einander zu tun haben.
ja, das soll sich ja jetzt ändern damit ich die gleichzeitig zur anzeige sortiert bringen kann


wieso die connect klasse kunden speichert?

weil wenn die Oberfläche speichern würde und es zurückschicken würde wäre es A: doppelter weg
B falsche schichtenarchitektur
Danil
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht

  Alt 21. Dez 2011, 13:02
Meine Frage zielte dahin ab, wieso die Connection Kunden etc. kennen muss? Sie ist dem Namen nach doch dazu da, eine Verbindung zur DB zu verwalten. Kunden/Bücher/WasWeißIchSonstNoch hat sie doch überhaupt nicht zu interessieren.
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
Impulz

Registriert seit: 19. Aug 2011
Ort: Lübeck
68 Beiträge
 
Delphi 7 Professional
 
#3

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht

  Alt 21. Dez 2011, 13:06
Die aufgabe der Connection Unit besteht darin:

wie du schon richtig sagtest: die Verbindung herzustellen.


Nur außerdem Erstellt sie die Queries und die Transaktionen und feuert die SQL's ab für verschiedene Situationen, DatenSpeichern, Laden,Löschen,bearbeiten.

Sie übernimmt die Funktion der Logik zwischen Datenbank und Oberfläche also alles was von der DB an die Oberfläche geht geht aus der Connection
als beispiel hier zb:




Code:
procedure TDataconnect.LegeSendungAn(ASendung: TSendung);

var
  neuerSeQuery: TIBOQuery;
  neuerSeTransa:TIBOTransaction;
begin
  neuerSeQuery:= TIBOQuery.Create(nil);
  neuerSeTransa:= TIBOTransaction.Create(nil);
  neuerSeTransa.IB_Connection:=neuerseQuery.IB_Connection ;
  try
    neuerSeQuery.IB_Connection:= FDataBase;
    neuerSeTransa.IB_Connection:= FDatabase;
    try
      neuerSeQuery.SQL.Text:= 'INSERT INTO Sendungsverfolgung (Status,Rechnung) Values ('+QuotedStr(ASendung.Status)+','+QuotedStr(ASendung.Rechnung)+') returning Sendungsverfolgung_ID';
      neuerSeQuery.ExecSQL;
      neuerSETransa.Commit;
    Except
      on E : Exception do
      begin
        ShowMessage('FEHLER IN LEGE Sendung AN');
        neuerSeTransa.Rollback;
      end;
    end;
  Finally
    neuerSeQuery.Free;
    neuerSeTransa.Free;
  end;
end;
und auf die funktion greift die oberfläche zu und zwar hier:::::::::::::
*SIEHE SENDUNG*

Code:
procedure TStartseite.Hinzufgen1Click(Sender: TObject);
var
  Kunde: TKunde;
  Buch: TBuch;
  Sendung: TSendung;
  Autor: TAutor;
begin
  Dateneditieren.StrGrAuswahl.Cells[0,0]:='';
  Dateneditieren.StrGrAuswahl.Cells[1,0]:='';
  if IsPositiveResult(Dateneditieren.ShowModal()) then
  begin
    case (rgAuswahl.ItemIndex) of
      0 : begin
            Kunde :=TKunde.create (0,Dateneditieren.StrGrAuswahl.Cells[0,0],Dateneditieren.strgrauswahl.cells[1,0]);
            connect.LegeKundeAn(Kunde);
            addKundetoLV(Kunde);

          end;
      1 : begin
            Sendung:= TSendung.Create(0,Dateneditieren.StrGrAuswahl.Cells[0,0],Dateneditieren.strgrauswahl.cells[1,0]);
            connect.LegeSendungAn(Sendung);
            addSendungetoLV(Sendung);
          end;
      2 : begin
            Autor:= TAutor.Create(0,dateneditieren.StrGrAuswahl.Cells[0,0],Dateneditieren.strgrauswahl.cells[1,0]);
            connect.LegeAutorAn(Autor);
            addAutortoLV(Autor);
          end;
      3 : begin
            Buch:= TBuch.Create(0,StrToInt(Dateneditieren.StrGrAuswahl.Cells[0,0]),Dateneditieren.StrGrAuswahl.Cells[1,0]);
            connect.LegeBuchAn(Buch);
            addBuchtoLV(Buch);
          end;
    else
      begin
        ShowMessage('Ups, beim Anlegen des Kunden lief etwas schief');
      end;
    end;
  end;
end;
Danil

Geändert von Impulz (21. Dez 2011 um 13:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht

  Alt 21. Dez 2011, 13:14
Das ist IMHO der falsche Ansatz. Gib mir ein paar Minuten Zeit, dann skizziere ich mal, wie ich das meinte.
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
Benutzerbild von DeddyH
DeddyH

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

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht

  Alt 21. Dez 2011, 13:30
So, hier nun ein gaaanz grobes Modell:
Code:
TDataConnection
  - Servername
  - Benutzername
  - Passwort
  - DBName
  - Connect()
  - Disconnect()
 
TBasisdaten
  - Anlegen()
  - Bearbeiten()
  - Löschen()
 
TBasisliste(TObjectlist)
  - Connection: TDataConnection
  - Filter
  - Datenholen()
  - Aktualisieren()
 
TKunde(TBasisdaten)
  - ID
  - Name
  - Vorname
 
TKundenliste(TBasisliste)

Dasselbe dann für Bücher, etc.
Wenn man so etwas wie Referenzzählung und Klasseneigenschaften unter Delphi 7 hinbekommt, dann kommt man mit einer einzigen Connection aus, die vom ersten erzeugten Objekt erstellt und vom letzten zerstörten wieder freigegeben wird. Aber das sind Details, um die man sich später kümmern kann.
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
Impulz

Registriert seit: 19. Aug 2011
Ort: Lübeck
68 Beiträge
 
Delphi 7 Professional
 
#6

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht

  Alt 21. Dez 2011, 13:37
okay.

aber wie löse ich nun mein problem.
ich müsste ja die Kunden, Buecher etc an ein 'Übergeordnetes' Objekt weitergeben und dann das Objekt zur anzeige bringen?

und dieses Übergeordnete objekt brauche ich ja auch um die beziehungen zwischen den tabellen auch in der syntax darzustellen.


und mein problem ist es: einen ansatz bei dem objekt zufinden um die Kunden usw zusammenzufassen.

wie sieht sowas aus?

BEISPIELWEISE

KUNDENOBJEKT= KUNDEN ID VORNAME NACHNAME
BUCHOBJEKT= ID PREIS NAME

ich will aber das zur anzeige bringen:


KUNDEN VORNAME NACHNAME BUCH PREIS BUCH NAME:

usw...
Danil

Geändert von Impulz (21. Dez 2011 um 13:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht

  Alt 21. Dez 2011, 13:48
Man könnte die Kundenklasse ja dahingehend erweitern, dass sie die ihr zugewiesenen Bücher ermittelt und in einer TBuchliste ablegt (das Gleiche dann vice versa, man kann das auch noch weiter abstrahieren, aber davon nehme ich hier erst einmal Abstand). So, als Ergebnis hättest Du dann z.B. so etwas im Speicher:
Code:
42, Meier, Heinz, Am Bahnhof 5, 12345 Hinterpfuiteifi
  - 100, Krieg und Frieden, Tolstoi, ISBN Lalala
  - 120, Es, Stephen King, ISBN Wuppdi
Hier pickst Du Dir die Daten des Kunden heraus, die Du anzeigen möchtest, dasselbe dann bei den ermittelten Büchern.
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
Antwort Antwort


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 10:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz