|
Registriert seit: 19. Aug 2011 Ort: Lübeck 68 Beiträge Delphi 7 Professional |
#1
Delphi-Version: 5
Liebe Community,
ich habe nun ein Problem, zu dem ich nichts finde und davon garkeine vorstellung und ahnung habe... . Ich sag sag schon mal vorab, die quelltexte sind lang, aber da man irgendwie für die aufgabe alles braucht kann ich da auch nix weglassen. Was ich habe: eine Datenbankoberfläche bestehend aus 12 Units. und eine IBExpert Datenbank ich habe eine Logikschicht, in der die Logikgespeichert wird. BEISPIELE ich habe eine: Kundentabellenanzeige und eine für Sendungsverfolgung eine für Bücher und eine für autoren. Stellt euch mal vor ihr ruft die Kunden auf: was ihr als benutzer nicht seht: (KUNDEN_ID) was iht sehen könnt: Vorname und Nachname wenn ihr nun auf den Kunden mit einem Linksklick draufklickt und ihn anwählt erscheint ein PopUpMenu ein weiterer Klick öffnet ein StringGrid was folgendes zeigen soll: KUNDEN VORNAME KUNDEN NACHNAME SENDUNGS_ID RECHNUNGS_ID RECHNUNGSBETRAG BUCH_NAME AUTOR NAME NUN DIE FRAGE:::::: Wie kriege ich das hin eine neue Unit anzulegen dort ein Logisches Objekt zu verankern, wodrauf meine Logik zugreifen kann und die daten abrufen kann... ich muss also mehrere Objekte Kapseln.... NUN HIER IST DER QUELLCODE_________________________________________ ____________________________ OBS(Oberfläche)
Code:
unit OBS;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ExtCtrls, ComCtrls,DataBaseConnect,UKunde,UBuecher, USendungsverfolgung,IB_Dialogs, DB, ADODB, IBServices,IBODataset, IB_Components, IB_Session,ColorButton, OleCtrls,Autoren, SHDocVw,shellapi, Menus, UDatenEditieren, Kundeninfo,Grids; type TStartseite = class(TForm) rgAuswahl: TRadioGroup; pmEdit: TPopupMenu; Bea1: TMenuItem; Loeschen1: TMenuItem; lvAuswahl: TListView; Hinzufgen1: TMenuItem; imgLogo: TImage; imglschen: TImage; imgSLogan: TImage; pmKunden: TPopupMenu; Sendungen: TMenuItem; Rechnungen1: TMenuItem; mniBestellteBcher1: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Loeschen1Click(Sender: TObject); procedure Bea1click (Sender: TObject); procedure lvAuswahlClick(Sender: TObject); procedure Hinzufgen1Click(Sender: TObject); procedure lvAuswahlColumnClick(Sender: TObject; Column: TListColumn); procedure imgLschnClick(Sender: TObject); function addKundetoLV (AKunde:TKunde): TKundeList; function addBuchtoLV (ABuch:TBuch): TBuchList; function addSendungetoLV (ASendung:TSendung): TSendungList; function addAutortoLV (AAutor:TAutor): TAutorList; procedure rgAuswahlClick(Sender: TObject); procedure SendungenClick(Sender: TObject); private { Private declarations } public connect : tdataconnect; end; var Startseite: TStartseite; implementation {$R *.dfm} uses Anmeldefenster, Math; procedure TStartseite.FormCreate(Sender: TObject); var i: integer; cols: array of string; begin connect :=TDataconnect.create('SYSDBA','masterkey','127.0.0.1','c:\Dbs\FirstDB.fdb'); lvAuswahl.ViewStyle:=vsReport; imgLogo.Align:=alClient; for i := 0 to length(cols)-1 do begin lvAuswahl.Columns.Add(); lvAuswahl.Column[i].Caption:= cols[i]; lvAuswahl.ShowColumnHeaders:=true; lvAuswahl.ViewStyle:=vsReport; end; end; procedure TStartseite.FormActivate(Sender: TObject); var res : TModalResult; begin res:= PasswordDlg.ShowModal; if res=mrCancel then begin Application.Terminate; end; end; procedure TStartseite.Loeschen1Click(Sender: TObject); var Kunde: TKunde; Sendung: TSendung; Autor:TAutor; Buch: TBuch; begin if IsPositiveResult( MessageBoxW(0, 'Sicher?', 'Warning', MB_YESNO + MB_ICONWARNING) ) then begin if (rgAuswahl.ItemIndex= 0)then begin Kunde:= TKunde(lvAuswahl.ItemFocused.SubItems.Objects[0]); connect.DeleteKunde(Kunde); lvAuswahl.DeleteSelected(); end else if (rgAuswahl.ItemIndex=1)then begin Sendung:= TSendung(lvAuswahl.ItemFocused.SubItems.Objects[0]); connect.DeleteSendung(Sendung); lvAuswahl.DeleteSelected(); end else if (rgAuswahl.ItemIndex=2)then begin Autor:= TAutor(lvAuswahl.ItemFocused.SubItems.Objects[0]); connect.DeleteAutor(Autor); lvAuswahl.DeleteSelected(); end else if (rgAuswahl.ItemIndex=3)then begin Buch:= TBuch(lvAuswahl.ItemFocused.SubItems.Objects[0]); connect.DeleteBuecher(Buch); lvAuswahl.DeleteSelected(); end else end; end; procedure TStartseite.Bea1click(Sender:TObject); var Kunde :Tkunde; neuKunde:TKunde; neuItem: TListItem; Sendung :TSendung; neuSendung:TSendung; Autor :TAutor; neuAutor:TAutor; Buch :TBuch; neuBuch:TBuch; KItem: tLISTitem; SItem: TListItem; AItem: TListItem; BItem: TListitem; begin lvAuswahl.Refresh; begin if (rgAuswahl.ItemIndex = 0) then begin Kunde:= TKunde(lvAuswahl.ItemFocused.SubItems.Objects[0]); Dateneditieren.giveKundeDataToGrid(Kunde); if IsPositiveResult(Dateneditieren.ShowModal()) then begin Kunde.Vorname := Dateneditieren.StrGrAuswahl.Cells[0,0]; Kunde.Nachname := Dateneditieren.StrGrAuswahl.Cells[1,0]; connect.SaveKunde(Kunde); kitem:=lvAuswahl.ItemFocused; KItem.SubItems[0] :=Kunde.Vorname; Kitem.SubItems[1] := Kunde.Nachname; end else begin IsNegativeResult(Dateneditieren.ShowModal()) end; end else if (rgAuswahl.ItemIndex = 1) then begin sendung:= TSendung(lvAuswahl.ItemFocused.SubItems.Objects[0]); Dateneditieren.giveSendungDataToGrid(Sendung); if IsPositiveResult(Dateneditieren.ShowModal()) then begin Sendung.Status := Dateneditieren.StrGrAuswahl.Cells[0,0]; Sendung.Rechnung := Dateneditieren.StrGrAuswahl.Cells[1,0]; connect.SaveSendung(Sendung); SItem:=lvAuswahl.ItemFocused; Sitem.SubItems[0] :=Sendung.Status; Sitem.SubItems[1] :=Sendung.Rechnung; end else begin IsNegativeResult(Dateneditieren.ShowModal()) end; end else if (rgAuswahl.ItemIndex = 2) then begin Autor:= TAutor(lvAuswahl.ItemFocused.SubItems.Objects[0]); Dateneditieren.giveAutorDataToGrid(Autor); if IsPositiveResult(Dateneditieren.ShowModal()) then begin Autor.Vorname := Dateneditieren.StrGrAuswahl.Cells[0,0]; Autor.Nachname := Dateneditieren.StrGrAuswahl.Cells[1,0]; connect.SaveAutor(Autor); Aitem:=lvAuswahl.ItemFocused; AItem.SubItems[0] :=Autor.Vorname; Aitem.SubItems[1] := Autor.Nachname; end else begin IsNegativeResult(Dateneditieren.ShowModal()) end; end else if (rgAuswahl.ItemIndex = 3) then begin Buch:= TBuch(lvAuswahl.ItemFocused.SubItems.Objects[0]); Dateneditieren.giveBuchDataToGrid(Buch); if IsPositiveResult(Dateneditieren.ShowModal()) then begin Buch.Preis := (StrToInt(Dateneditieren.StrGrAuswahl.Cells[0,0])); Buch.Name := Dateneditieren.StrGrAuswahl.Cells[1,0]; connect.SaveBuch(Buch); Bitem:=lvAuswahl.ItemFocused; BItem.Caption :=IntToStr(Buch.Preis); Bitem.SubItems[0] := Buch.name; end else begin IsNegativeResult(Dateneditieren.ShowModal()) end; end; lvAuswahl.Refresh; lvAuswahl.Repaint; end; end; procedure TStartseite.lvAuswahlClick(Sender: TObject); begin lvAuswahl.Selected.Focused:=true; pmKunden.Popup(1355,305); end; 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; procedure TStartseite.lvAuswahlColumnClick(Sender: TObject; Column: TListColumn); var kunde: TKunde; begin connect.orderbyID(Kunde); end; procedure TStartseite.imgLschnClick(Sender: TObject); begin lvAuswahl.Clear; rgAuswahl.ItemIndex:= -1; end; function TStartseite.addKundetoLV(AKunde: TKunde): TKundeList; var myItemAddKtoLV: TListItem; begin myItemAddKtoLV:= lvAuswahl.Items.Add; myItemAddKtoLV.Caption:=(AKunde.Vorname); myItemAddKtoLV.SubItems.Add(AKunde.Nachname); end; function TStartseite.addAutortoLV(AAutor: TAutor): TAutorList; var myItemAddKtoLV: TListItem; begin myItemAddKtoLV:= lvAuswahl.Items.Add; myItemAddKtoLV.Caption:=(AAutor.Vorname); myItemAddKtoLV.SubItems.Add(AAutor.Nachname); end; function TStartseite.addBuchtoLV(ABuch: TBuch): TBuchList; var myItemAddKtoLV: TListItem; begin myItemAddKtoLV:= lvAuswahl.Items.Add; myItemAddKtoLV.Caption:=(IntToStr(ABuch.Preis)); myItemAddKtoLV.SubItems.Add(ABuch.name); end; function TStartseite.addSendungetoLV(ASendung: TSendung): TSendungList; var myItemAddKtoLV: TListItem; begin myItemAddKtoLV:= lvAuswahl.Items.Add; myItemAddKtoLV.Caption:=(ASendung.Status); myItemAddKtoLV.SubItems.Add(ASendung.Rechnung); end; procedure TStartseite.rgAuswahlClick(Sender: TObject); var all :integer ; KundeList: TKundeList; Kunde : TKunde; MyListItem : TListItem; Blist : TBuchList ; Buch : TBuch; neuBuch: integer; Slist : TSendungList ; Sendung : TSendung; Alist : TAutorList ; Autor : TAutor; begin If ((rgAuswahl.ItemIndex=0) or (rgAuswahl.ItemIndex=1) or (rgAuswahl.ItemIndex = 2) or (rgAuswahl.ItemIndex=3)) then begin if (rgAuswahl.ItemIndex = 0) then begin KundeList:=connect.getKunden(); lvAuswahl.clear(); lvAuswahl.Column[0].Caption:= 'Vorname' ; lvAuswahl.Column[1].Caption:= 'Nachname'; for all:=0 to KundeList.Count-1 do begin Kunde:=KundeList.getKundeByIndex(all); MyListItem:= lvAuswahl.Items.Add(); MyListItem.caption:=(Kunde.Vorname); MyListItem.SubItems.addObject(Kunde.Nachname,Kunde); MyListItem.SubItems.AddObject(IntToStr(kunde.ID),kunde) ; end; end else if (rgAuswahl.ItemIndex = 3) then begin Blist:=connect.getBuecher; lvAuswahl.clear(); lvAuswahl.Column[0].Caption:= 'Preis' ; lvAuswahl.Column[1].Caption:= 'Name'; for all:=0 to Blist.Count-1 do begin Buch:=Blist.getBuchByIndex(all); MyListItem:= lvAuswahl.Items.Add(); MyListItem.caption:= IntToStr((Buch.preis)); MyListItem.SubItems.addObject(Buch.Name,Buch); end; end else if (rgAuswahl.ItemIndex = 1) then begin Slist:=connect.getSendung; lvAuswahl.Clear(); lvAuswahl.Column[0].Caption:= 'Status' ; lvAuswahl.Column[1].Caption:= 'Rechnung'; for all:=0 to Slist.Count-1 do begin Sendung:=Slist.getSendungByIndex(all); MyListItem:= lvAuswahl.Items.Add(); MyListItem.Caption:= (Sendung.Status); MyListItem.SubItems.AddObject(Sendung.Rechnung,Sendung); end; end else if (rgAuswahl.ItemIndex = 2) then begin Alist:=connect.getAutor; lvAuswahl.clear(); lvAuswahl.Column[0].Caption:= 'Vorname' ; lvAuswahl.Column[1].Caption:= 'Nachname'; for all:=0 to Alist.Count-1 do begin Autor:=Alist.getAutorByIndex(all); MyListItem:= lvAuswahl.Items.Add(); MyListItem.Caption:= (Autor.Vorname); MyListItem.SubItems.AddObject(Autor.Nachname,Autor); end; end; end else begin ShowMessage('wählen Sie bitte eine Option'); end; end; procedure TStartseite.SendungenClick(Sender: TObject); var kunde:tkunde; myitem: tlistitem; Sendung: TSendung; SList: TSendungList; begin Kunde:= TKunde(lvAuswahl.ItemFocused.SubItems.Objects[0]); SList:= connect.getSendungByKunde(Kunde); // Sendung:=Slist.getSendungByIndex(0); // connect.getPreis(Sendung); KunInformation.getdataforgrid(Kunde,Slist); // connect.getKundenInformation(Sendung,kunde); KunInformation.ShowModal(); end; HIER IST MEINE LOGIKUNIT die später auf die neue zugreifen soll______________________________________________ _
Code:
unit DataBaseConnect;
interface uses Windows, SysUtils, Variants, Classes,controls, Dialogs, ComCtrls, IBODataset, IB_Components, IB_Session,IB_Dialogs,UKunde,UBuecher ,Usendungsverfolgung,Autoren,URechnung; type TDataconnect = Class(TObject) private FDataBase : TIBODatabase; function IsConnected() : Boolean; public function getKunden():TKUndeList; function getBuecher():TBuchList; function getSendung():TSendungList; function getSendungByKunde(AKunde:TKunde): TSendungList; function getAutor(): TAutorList; procedure SaveKunde(AKunde : TKunde); procedure SaveSendung(ASendung: TSendung); procedure SaveAutor(AAutor: TAutor); procedure SaveBuch(Abuch: TBuch); procedure DeleteKunde (Akunde: TKunde); procedure DeleteBuecher (ABuch: TBuch); procedure DeleteSendung (Asendung:TSendung); procedure DeleteAutor (AAutor:TAutor); procedure LegeKundeAn (Akunde: TKunde); procedure LegeBuchAn (ABuch:TBuch); procedure LegeAutorAn (AAutor:TAutor); procedure LegeSendungAn (ASendung:TSendung); procedure ORDERbyID (AKunde:TKunde); procedure getPreis (Asendung:Tsendung); constructor create(User,Passw,Server,Path: string); property Connected : Boolean read IsConnected; end; implementation uses DateUtils, Grids, Forms, DB; { TDataconnect } constructor TDataconnect.create(User,Passw,Server,Path: string); begin FDataBase := TIBODatabase.Create(nil); FDataBase.Username := User; FDataBase.Password := Passw; FDataBase.Server := Server; FDataBase.Path := path; FDataBase.Protocol := cpTCP_IP; try FDataBase.Connect() except on e:Exception do begin ShowMessage('Verbindung fehlgeschlagen. Überprüfen Sie ihre Login Daten.'); end; end; end; function TDataconnect.getKunden():TKundeList; var Kunde : TKunde; KundeQuery : TIBOQuery; KundeTransa : TIBOTransaction; begin Result:= TKundeList.create(); KundeQuery:= TIBOQuery.Create(nil); KundeQuery.SQL.Text:= 'SELECT * FROM KUNDEN '; KundeQuery.IB_Connection:= FDataBase; KundeTransa:= TIBOTRansaction.Create(nil); KundeTransa.IB_Connection:= FDataBase; KundeQuery.IB_Transaction:= KundeTransa; KundeTransa.StartTransaction(); try KundeQuery.Open(); while not KundeQuery.Eof do begin kunde:= TKunde.Create(KundeQuery.Fieldbyname('Kunden_ID').asInteger, KundeQuery.FieldbyName('Vorname').asString, KundeQuery.FieldbyName('nachname').AsString); Result.addkunde(Kunde); KundeQuery.Next(); end; KundeTransa.Commit(); except on e:Exception do begin ShowMessage('FEHLER IN GETKUNDEN'); KundeTransa.Rollback(); end; end; end; function TDataconnect.getBuecher():TBuchList; var Buch : TBuch; BuchQuery : TIBOQuery; BuchTransa : TIBOTransaction; begin Result:= TBuchList.create(); BuchQuery:= TIBOQuery.Create(nil); BuchQuery.SQL.Text:= 'SELECT * FROM BUECHER '; BuchQuery.IB_Connection:= FDataBase; BuchTransa:= TIBOTRansaction.Create(nil); BuchTransa.IB_Connection:= FDataBase; BuchQuery.IB_Transaction:= BuchTransa; BuchTransa.StartTransaction(); try BuchQuery.Open(); while not BuchQuery.Eof do begin Buch:= TBuch.Create (BuchQuery.Fieldbyname('Buch_ID').asInteger, BuchQuery.FieldbyName('Preise').asInteger, BuchQuery.FieldbyName('Name').asString,); Result.addBuch(Buch); BuchQuery.Next(); end; BuchTransa.Commit(); except on e:Exception do begin ShowMessage('FEHLER IN GETBUECHER'); BuchTransa.Rollback(); end; end; end; function TDataconnect.getSendung():TSendungList; var Sendung : TSendung; SendungQuery : TIBOQuery; SendungTransa : TIBOTransaction; begin Result:= TSendungList.create(); SendungQuery:= TIBOQuery.Create(nil); SendungQuery.SQL.Text:= 'SELECT * from Sendungsverfolgung'; SendungQuery.IB_Connection:= FDataBase; SendungTransa:= TIBOTRansaction.Create(nil); SendungTransa.IB_Connection:= FDataBase; SendungQuery.IB_Transaction:= SendungTransa; SendungTransa.StartTransaction(); try SendungQuery.Open(); while not SendungQuery.Eof do begin Sendung:= TSendung.Create(SendungQuery.Fieldbyname('Sendungsverfolgung_ID').asInteger, SendungQuery.FieldbyName('Status').asString, SendungQuery.FieldbyName('Rechnung').AsString); Result.addSendung(Sendung); SendungQuery.Next(); end; SendungTransa.Commit(); except on e:Exception do begin ShowMessage('FEHLER IN GET SENDUNG'); SendungTransa.Rollback(); end; end; end; function TDataconnect.getAutor():TAutorList; var Autor : TAutor; AutorQuery : TIBOQuery; AutorTransa : TIBOTransaction; begin Result:= TAutorList.create(); AutorQuery:= TIBOQuery.Create(nil); AutorQuery.SQL.Text:= 'SELECT * FROM Autoren '; AutorQuery.IB_Connection:= FDataBase; AutorTransa:= TIBOTRansaction.Create(nil); AutorTransa.IB_Connection:= FDataBase; AutorQuery.IB_Transaction:= AutorTransa; AutorTransa.StartTransaction(); try AutorQuery.Open(); while not AutorQuery.Eof do begin Autor:= TAutor.Create(AutorQuery.Fieldbyname('Autor_ID').asInteger, AutorQuery.FieldbyName('Vorname').asString, AutorQuery.FieldbyName('nachname').AsString); Result.addautor(Autor); AutorQuery.Next(); end; AutorTransa.Commit(); except on e:Exception do begin ShowMessage('fehler in get Autor'); AutorTransa.Rollback(); end; end; end; function TDataconnect.IsConnected: Boolean; begin Result:= self.FDataBase.Connected; end; procedure TDataconnect.SaveKunde(AKunde: TKunde); var SaveKuQuery : TIBOQuery; SaveKuTransa : TIBOTransaction; begin SaveKuQuery:= TIBOQuery.Create(nil); SaveKuQuery.IB_Connection:= FDataBase; SaveKuTransa:= TIBOTRansaction.Create(nil); SaveKuTransa.IB_Connection:= FDataBase; SaveKuQuery.SQL.Text := 'UPDATE Kunden k SET K.Vorname = '+QuotedStr(AKunde.Vorname)+','+ 'K.Nachname ='+QuotedStr(AKunde.Nachname)+' WHERE k.Kunden_ID = '''+(inttoStr(AKunde.ID))+ ''';'; SaveKuQuery.ExecSQL(); SaveKuTransa.Commit; SaveKuQuery.Free; SaveKuTransa.Free; end; procedure TDataconnect.deleteKunde(AKunde: TKunde); var delKuQuery: TIBOQuery; delKuTransa: TIBOTransaction; begin delKuQuery:= TIBOQuery.Create(nil); try delKuQuery.IB_Connection:=FDataBase; delKuTransa:= TIBOTransaction.Create(nil); try delKuTransa.IB_Connection:= FDataBase; delKuQuery.IB_Connection:=delKuQuery.IB_Connection; try delKuQuery.SQL.Text :=' DELETE FROM Sendungsverfolgung S WHERE s.Kunden_ID = :id'; delKuQuery.ParamByName('id').Value := AKunde.ID; delKuQuery.ExecSQL(); delKuQuery.SQL.Text :=' DELETE FROM RECHNUNGEN R WHERE r.Kunden_ID = :id'; delKuQuery.ParamByName('id').value := AKunde.ID; delKuQuery.ExecSQL(); delKuQuery.SQL.Text :=' DELETE FROM Kunden K WHERE k.Kunden_ID = :id'; delKuQuery.ParamByName('id').Value := AKunde.ID; delKuQuery.ExecSQL(); delKuTransa.Commit; except on E: Exception do begin ShowMessage('FEHLER IN deleteKunde'); delKuTransa.Rollback; end; end; finally delKuTransa.Free; end; finally delKuQuery.Free; end; end; procedure TDataconnect.SaveAutor(AAutor: TAutor); var SaveAuQuery : TIBOQuery; SaveAuTransa : TIBOTransaction; begin SaveAuQuery:= TIBOQuery.Create(nil); SaveAuQuery.IB_Connection:= FDataBase; SaveAuTransa:= TIBOTRansaction.Create(nil); SaveAuTransa.IB_Connection:= FDataBase; SaveAuQuery.SQL.Text := 'UPDATE Autoren A SET A.Vorname = '+QuotedStr(AAutor.Vorname)+','+ 'A.Nachname ='+QuotedStr(AAutor.Nachname)+' WHERE A.Autor_ID = '''+(inttoStr(AAutor.ID))+ ''';'; SaveAuQuery.ExecSQL(); SaveAuTransa.Commit; SaveAuQuery.Free; SaveAuTransa.Free; end; procedure TDataconnect.SaveBuch(Abuch: TBuch); var SaveBuQuery : TIBOQuery; SaveBuTransa : TIBOTransaction; begin SaveBuQuery:= TIBOQuery.Create(nil); SaveBuQuery.IB_Connection:= FDataBase; SaveBuTransa:= TIBOTRansaction.Create(nil); SaveBuTransa.IB_Connection:= FDataBase; try SaveBuQuery.SQL.Text := 'UPDATE Buecher B SET B.Preise = '+inttoStr(Abuch.Preis)+','+ 'B.Name ='+QuotedStr(Abuch.name)+' WHERE B.Buch_ID = '+(inttoStr(Abuch.ID)); SaveBuQuery.ExecSQL(); SaveBuTransa.Commit; except on e:Exception do begin showMessage ('FEHLER IN SAve buch: '+ e.message); SaveButransa.Rollback; end; end; SaveBuQuery.Free; SaveBuTransa.Free; end; procedure TDataconnect.SaveSendung(ASendung: TSendung); var SaveSeQuery : TIBOQuery; SaveSeTransa : TIBOTransaction; begin SaveSeQuery:= TIBOQuery.Create(nil); SaveSeQuery.IB_Connection:= FDataBase; SaveSeTransa:= TIBOTRansaction.Create(nil); SaveSeTransa.IB_Connection:= FDataBase; SaveSeQuery.SQL.Text := 'UPDATE Sendungsverfolgung S SET S.Status = '+QuotedStr(ASendung.Status)+','+ 'S.Rechnung ='+QuotedStr(ASendung.Rechnung)+' WHERE S.Sendungsverfolgung_ID = '''+(inttoStr(ASendung.ID))+ ''';'; SaveSeQuery.ExecSQL(); SaveSeTransa.Commit; SaveSeQuery.Free; SaveSeTransa.Free; end; procedure TDataconnect.LegeKundeAn(Akunde: TKunde); var neuerKuQuery: TIBOQuery; neuerKuTransa:TIBOTransaction; begin neuerKuQuery:= TIBOQuery.Create(nil); neuerKuTransa:= TIBOTransaction.Create(nil); neuerKuTransa.IB_Connection:=neuerKuQuery.IB_Connection ; try neuerKuQuery.IB_Connection:= FDataBase; neuerKuTransa.IB_Connection:= FDatabase; try neuerKuQuery.SQL.Text:= 'INSERT INTO KUNDEN (Vorname,Nachname) Values ('+QuotedStr(Akunde.Vorname)+','+QuotedStr(Akunde.Nachname)+') returning Kunden_ID'; neuerKuQuery.ExecSQL; Akunde.ID := neuerKuQuery.ParamByName('Kunden_ID').AsInteger; neuerKuTransa.Commit; Except on E : Exception do begin ShowMessage('FEHLER IN Lege Kunde AN'); neuerKuTransa.Rollback; end; end; Finally neuerKuQuery.Free; neuerKuTransa.Free; end; end; procedure TDataconnect.ORDERbyID(AKunde: TKunde); var groupKuQuery : TIBOQuery; groupKuTrans : TIBOTransaction; begin groupKuQuery:=TIBOQuery.Create(nil); groupKuTrans:=TIBOTransaction.Create(nil); try groupKuQuery.IB_Connection:= FDataBase; groupKuTrans.IB_Connection:=FDataBase; try groupKuQuery.SQL.Text:= 'Select * FROM KUNDEN ORDER BY Kunden_ID'; groupKuQuery.ExecSQL; groupKuTrans.Commit; except on E: Exception do begin showMessage ('FEHLER IN ORDERBYID AN'); groupKuTrans.Rollback ; end; end; finally groupKuQuery.Free; groupKuTrans.free; end; end; procedure TDataconnect.DeleteAutor(AAutor: TAutor); var delAuQuery: TIBOQuery; delAuTransa: TIBOTransaction; begin delAuQuery:= TIBOQuery.Create(nil); try delAuQuery.IB_Connection:=FDataBase; delAuTransa:= TIBOTransaction.Create(nil); try delAuTransa.IB_Connection:= FDataBase; try delAuQuery.SQL.Text :=' DELETE FROM Autoren A WHERE a.Autor_ID = :id'; delAuQuery.ParamByName('id').value := AAutor.ID; delAuQuery.ExecSQL(); delAuTransa.Commit; except on E: Exception do begin ShowMessage('FEHLER IN delete Autor AN'); delAuTransa.Rollback; end; end; finally delAuTransa.Free; end; finally delAuQuery.Free; end; end; procedure TDataconnect.DeleteBuecher(ABuch: TBuch); var delBuQuery: TIBOQuery; delBuTransa: TIBOTransaction; begin delBuQuery:= TIBOQuery.Create(nil); try delBuQuery.IB_Connection:=FDataBase; delBuTransa:= TIBOTransaction.Create(nil); try delBuTransa.IB_Connection:= FDataBase; try delBuQuery.SQL.Text :=' DELETE FROM Buecher B WHERE B.Buch_ID = :id'; delBuQuery.ParamByName('id').value := ABuch.ID; delBuQuery.ExecSQL(); delBuTransa.Commit; except on E: Exception do begin ShowMessage('FEHLER IN delete buecher AN'); delBuTransa.Rollback; end; end; finally delBuTransa.Free; end; finally delBuQuery.Free; end; end; procedure TDataconnect.DeleteSendung(Asendung: TSendung); var delSeQuery: TIBOQuery; delSeTransa: TIBOTransaction; begin delSeQuery:= TIBOQuery.Create(nil); try delSeQuery.IB_Connection:=FDataBase; delSeTransa:= TIBOTransaction.Create(nil); try delSeQuery.IB_Connection:= FDataBase; try delSeQuery.SQL.Text :=' DELETE FROM Sendungsverfolgung WHERE Sendungsverfolgung_ID = :id'; delSeQuery.ParamByName('id').Value := Asendung.ID; delSeQuery.ExecSQL(); delSeTransa.Commit; except on E: Exception do begin ShowMessage('FEHLER IN DELETE SENDUNG'); delSeTransa.Rollback; end; end; finally delSeTransa.Free; end; finally delSeQuery.Free; end; end; procedure TDataconnect.LegeAutorAn(AAutor: TAutor); var neuerAuQuery: TIBOQuery; neuerAuTransa:TIBOTransaction; begin neuerAuQuery:= TIBOQuery.Create(nil); neuerAuTransa:= TIBOTransaction.Create(nil); neuerAuTransa.IB_Connection:=neuerAuQuery.IB_Connection ; try neuerAuQuery.IB_Connection:= FDataBase; neuerAuTransa.IB_Connection:= FDatabase; try neuerAuQuery.SQL.Text:= 'INSERT INTO Autoren (Vorname,Nachname) Values ('+QuotedStr(AAutor.Vorname)+','+QuotedStr(AAutor.Nachname)+') returning Autor_ID'; neuerAuQuery.ExecSQL; neuerAuTransa.Commit; Except on E : Exception do begin ShowMessage('FEHLER IN LEGE AUTOR AN'); neuerAuTransa.Rollback; end; end; Finally neuerAuQuery.Free; neuerAuTransa.Free; end; end; procedure TDataconnect.LegeBuchAn(ABuch: TBuch); var neuerBuQuery: TIBOQuery; neuerBuTransa:TIBOTransaction; begin neuerBuQuery:= TIBOQuery.Create(nil); neuerBuTransa:= TIBOTransaction.Create(nil); neuerBuTransa.IB_Connection:=neuerBuQuery.IB_Connection ; try neuerBuQuery.IB_Connection:= FDataBase; neuerBuTransa.IB_Connection:= FDatabase; try ////////////////////////////////////////////Buecher funktionieren wegen des Preises nicht////////////////////////////////////////////////////////////////////// neuerBuQuery.SQL.Text:= 'INSERT INTO Buecher(Preise,Name) Values ('+IntToStr(ABuch.Preis)+','+QuotedStr(ABuch.name)+') returning Buch_ID'; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// neuerBuQuery.ExecSQL; neuerBuTransa.Commit; Except on E : Exception do begin ShowMessage('FEHLER IN LEGE Buch AN'); neuerBuTransa.Rollback; end; end; Finally neuerBuQuery.Free; neuerBuTransa.Free; end; end; 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; function TDataconnect.getSendungByKunde(AKunde:TKunde): TSendungList; var KundInfoQuery : TIBOQuery; KundInfoTrans : TIBOTransaction; newSendung: TSendung; sendungID: integer; sendungStatus, sendungRechnung: string; begin try Result := TSendungList.create(); KundInfoQuery:=TIBOQuery.create(nil); KundInfoTrans:=TIBOTransaction.create(nil); KundInfoQuery.IB_Connection:=FDataBase; KundInfoTrans.IB_Connection:=FDataBase; KundInfoQuery.IB_Connection:= KundInfoTrans.IB_Connection; try KundInfoQuery.SQL.Text:='Select * From Sendungsverfolgung S where S.Kunden_ID= :id'; KundInfoQuery.ParamByName('id').Value := AKunde.ID; KundInfoQuery.Open(); // Hier wird das Ergebnis ausgelesen while not KundInfoQuery.Eof do begin sendungID := KundInfoQuery.FieldByName('Sendungsverfolgung_ID').AsInteger; sendungStatus := KundInfoQuery.FieldByName('Status').AsString; sendungRechnung := KundInfoQuery.FieldByName('Rechnung').AsString; newSendung := TSendung.Create(sendungID, sendungStatus, sendungRechnung); Result.addSendung(newSendung); KundInfoQuery.Next(); end; KundInfoQuery.Close(); except on E:Exception do begin showMessage('FEHLER IN GETKUNDENINFORMATION' + e.Message) end; end; finally KundInfoQuery.Free; KundInfoTrans.Free; end; end; procedure TDataconnect.getpreis(ASendung: TSendung); var saveKuInfoQuery: TIBOQuery; SaveKuInfoTrans: TIBOTransaction; begin try SaveKuInfoQuery:= TIBOQuery.Create(nil); SaveKuInfoQuery.IB_Connection:= FDataBase; SaveKuInfoTrans:= TIBOTRansaction.Create(nil); SaveKuInfoTrans.IB_Connection:= FDataBase; SaveKuInfoQuery.SQL.Text :='SELECT k.Kunden_ID, b.name, Sum( B.preise ), count( b.preise )from RECHNUNGEN r Inner join kunden k on (K.kunden_id = r.kunden_id) Inner join Buecher b on (B.buch_id= r.buch_id) where r.Sendungsverfolgung_ID = :id group by K.kunden_id, b.Name'; saveKuInfoQuery.ParamByName('id').Value:= Asendung.id; SaveKuInfoQuery.ExecSQL(); SaveKuInfoTrans.Commit; except SaveKuInfoQuery.Free; SaveKuInfoTrans.Free end; end; end. HIER KOMMT DAS STRINGGRID WO DIE DATEN ZUR ANZEIGE GEBRACHT WERDEN SOLLEN__________________________________________
Code:
zum orientieren das stringgrid mit Bearbeiten Loeschen und Hinzufügen -----------------------------
unit KundenInfo;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids,UKunde,Usendungsverfolgung,UBuecher,Autoren; type TKunInformation = class(TForm) StrGrKundeAusw: TStringGrid; procedure FormCreate(Sender: TObject); procedure getdataforgrid (AKUNde: TKunde;Asendunglist:TSendungList); private { Private declarations } public { Public declarations } end; var KunInformation: TKunInformation; implementation {$R *.dfm} procedure TKunInformation.FormCreate(Sender: TObject); var arow,acol: integer; kunde: TKUnde; Autor: TAutor; Buch:TBuch; Sendung: TSendung; Slist: TSendungList; begin StrGrKundeAusw.ColCount:=20; StrGrKundeAusw.Cells[arow,acol]:=''; getdataforgrid(kunde,SList); hide; end; procedure TKunInformation.getdataforgrid(AKUNde: TKunde;Asendunglist:TSendungList); var asendung:tsendung; all: integer; begin Asendunglist.getSendungByIndex(all); StrGrKundeAusw.Cells[1,1]:=Akunde.Vorname; StrGrKundeAusw.cells[2,1]:=AKUNde.nachname; StrGrKundeAusw.Cells[3,1]:=asendung.Status; StrGrKundeAusw.cells[4,1]:=asendung.Rechnung; end; end.
Code:
ACHTUNG JETZT KOMMEN DIE UNITS MIT DEN OBJEKTEN !!!!!!!!!!!!!!unit UDatenEditieren; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, IB_Grid, Buttons, ExtCtrls, UKunde,USendungsverfolgung,Autoren,UBuecher; type TDatenEditieren = class(TForm) btnBeenden: TBitBtn; lblDataEdit: TLabel; StrGrAuswahl: TStringGrid; Speichern: TBitBtn; procedure FormCreate(Sender: TObject); procedure StrGrAuswahlSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); private public aRow: integer; acol: integer; procedure giveKundeDataToGrid(AKUnde:TKunde); procedure giveSendungDataToGrid (ASendung:TSendung); procedure giveAutorDataToGrid(AAutor:TAutor); procedure giveBuchDataToGrid(ABuch: TBuch); end; Var Dateneditieren: Tdateneditieren; implementation {$R *.dfm} { TDatenEditieren } procedure TDatenEditieren.giveKundeDataToGrid(AKUnde:TKunde); Begin StrGrAuswahl.Cells[0,0]:= AKUnde.Vorname; StrGrAuswahl.Cells[1,0]:= AKUnde.Nachname; end; procedure TDatenEditieren.FormCreate(Sender: TObject); begin StrGrAuswahl.ColCount:=20; StrGrAuswahl.Cells[arow,acol]:=''; hide; end; procedure TDatenEditieren.StrGrAuswahlSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin StrGrAuswahl.Options:= [goEditing]; end; procedure TDatenEditieren.giveSendungDataToGrid(ASendung:TSendung); begin StrGrAuswahl.Cells[0,0]:= ASendung.Status; StrGrAuswahl.Cells[1,0]:=ASendung.Rechnung; end; procedure TDatenEditieren.giveAutorDataToGrid(AAutor: TAutor); begin StrGrAuswahl.Cells[0,0]:= AAutor.Vorname; StrGrAuswahl.Cells[1,0]:= AAutor.Nachname; end; procedure TDatenEditieren.giveBuchDataToGrid(ABuch: TBuch); begin StrGrAuswahl.Cells[0,0]:= IntToStr(Abuch.Preis); StrGrAuswahl.Cells[1,0]:= ABuch.name; end; end. DA SIE SICH ÄHNLICH SIND ZEIGE ICH ERSTMAL NUR DIE KUNDEN
Code:
SOOOO und wie soll ich jetzt die Unit angehen
unit UKunde;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ExtCtrls, ComCtrls; type TKunde = class(TObject) private FKunden_ID : integer; FKunden_Nachname: String; FKunden_Vorname: String; procedure setVorname(newValue : String); procedure setNachname(newValue: string); procedure setID(newValue: Integer); public constructor Create (AKunden_ID:Integer; AVorname, ANachname: string); property Vorname: string read FKunden_Vorname write setVorname; property Nachname: string read FKunden_Nachname write setNachname; property ID: integer read FKunden_ID write setID; end; TKundeList = class(Tobject) private FKundenListe :TStringList; public procedure addkunde (AKunde:TKunde); function Count():integer; function getKundeById(AKunden_ID:integer):TKunde; function getKundeByIndex(AIndex: integer): TKunde; constructor create (); end; implementation uses StrUtils; { TKunde } constructor TKunde.Create(AKunden_ID:Integer; AVorname, ANachname: string); begin inherited Create(); self.FKunden_ID:= AKunden_ID; self.FKunden_Vorname:= AVorname; self.FKunden_Nachname:= ANachname; end; procedure TKunde.setVorname(newValue: String); begin if (Trim(newValue)<>'') then begin self.FKunden_Vorname:=newValue; end; end; procedure TKunde.setNachname(newValue: String); begin if (Trim(newValue)<>'') then begin self.FKunden_Nachname:=newValue; end; end; procedure TKunde.setID(newValue: Integer); begin self.FKunden_ID := newValue; end; { TKUndeList } function TKundeList.Count():integer; Begin result:= FKundenListe.Count; end; procedure TKundeList.addKunde(akunde:tkunde); begin FKundenListe.AddObject(IntToStr(AKunde.ID),AKunde); end; constructor TKundeList.create; begin inherited create(); self.FKundenListe:=TStringList.Create; end; function TKundeList.getKundeByID(AKunden_ID:integer): TKunde; var idx : Integer; begin idx := FKundenListe.IndexOf(IntToStr(AKunden_ID)); if (idx>-1)then begin Result:= Tkunde(FkundenListe.Objects[idx]); end else begin result:= nil; end; end; function TKundeList.getKundeByIndex(AIndex: integer): TKunde; begin if(AIndex>-1)and(AIndex<FKundenListe.Count) then begin result:= Tkunde(FkundenListe.Objects[AIndex]); end else begin result:=nil; end; end; end.
Code:
???????????????????????????????????????????????
Schon alleine Danke für den der sich das durchgeschaut hat ![]() tut mir leid für mein Quellcode... mach noch nicht so lange was ich hoffe, dass ihr mir das verzeiht. Vielen Dank schonmal für eure Hilfe,
Danil
|
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |