|
Registriert seit: 18. Mai 2008 Ort: Cottbus 53 Beiträge |
#14
Das Projekt ist mit DB ca. 8 MB groß, und das ist mit DSL-Light so ne sache... aber ich kann dir mal die beiden Units schicken, auf die es ankommt:
Code:
Die Unit, die es einfügt.
unit URech;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, UKunden1, UKunden2, UArtikel1, UArtikel2, StdCtrls, UAbgabe, ComCtrls, Grids, DB, IBCustomDataSet, IBDatabase, frxClass, frxDBSet, UQuittung; type TFRech = class(TForm) Kunde: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; LKdNr: TLabel; LAnr: TLabel; LName: TLabel; LTel: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; LOrt: TLabel; LStr: TLabel; LDat: TLabel; Button1: TButton; GroupBox1: TGroupBox; Label4: TLabel; Label5: TLabel; Label6: TLabel; LGHA: TLabel; LGHQ: TLabel; BSuch: TButton; EMeng: TEdit; Label7: TLabel; StringGrid1: TStringGrid; GroupBox2: TGroupBox; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; LRestA: TLabel; LRestQ: TLabel; LSum: TLabel; LSumS: TLabel; LSumA: TLabel; LSumQ: TLabel; Button2: TButton; Button3: TButton; DS_Posten: TIBDataSet; IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; procedure Button1Click(Sender: TObject); procedure ArtTabelle_show; procedure BSuchClick(Sender: TObject); procedure EMengExit(Sender: TObject); procedure StringGrid1Click(Sender: TObject); procedure Gesamt; procedure clear; procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type TArtikel=record Artikelnummer, Bezeichnung, Tauschware_str, Einheit:String; Menge, Tauschware, Tauschmenge, Tauschmenge_ges:integer; EzPreis, GesPreis, Steuer:Currency; end; type TArtikeltabelle=Array of TArtikel; var FRech: TFRech; GHA, GHQ, RestGHA, RestGHQ, GesGHA, GesGHQ:Integer; ArtT:TArtikelTabelle; len:integer; Sum,SumS:Currency; function NextFreePostenID:integer; implementation {$R *.dfm} procedure TFRech.ArtTabelle_show; var i:integer; begin if length(ArtT)>0 then begin for i := 0 to Stringgrid1.RowCount - 1 do Stringgrid1.Rows[i].Clear; Stringgrid1.RowCount:=2; Stringgrid1.Cells[0,0]:='Artikelnummer'; Stringgrid1.Cells[1,0]:='Bezeichnung'; Stringgrid1.Cells[2,0]:='Menge'; Stringgrid1.Cells[3,0]:='Einheit'; Stringgrid1.Cells[4,0]:='Einzelpreis'; Stringgrid1.Cells[5,0]:='Steuer'; Stringgrid1.Cells[6,0]:='Gesamtpreis'; Stringgrid1.Cells[7,0]:='Tauschware'; Stringgrid1.ColWidths[0]:=90; Stringgrid1.ColWidths[1]:=150; Stringgrid1.ColWidths[2]:=50; Stringgrid1.ColWidths[3]:=70; Stringgrid1.ColWidths[4]:=70; Stringgrid1.ColWidths[5]:=70; Stringgrid1.ColWidths[6]:=70; Stringgrid1.ColWidths[7]:=90; Stringgrid1.RowCount:=length(ArtT)+1; for i := 0 to length(ArtT)-1 do begin Stringgrid1.Cells[0,i+1]:=ArtT[i].Artikelnummer; Stringgrid1.Cells[1,i+1]:=(ArtT[i].Bezeichnung); Stringgrid1.Cells[2,i+1]:=(inttostr(ArtT[i].Menge)); Stringgrid1.Cells[3,i+1]:=(ArtT[i].Einheit); Stringgrid1.Cells[4,i+1]:=(FloatToStrF(ArtT[i].EzPreis,ffFixed,10,2)); Stringgrid1.Cells[5,i+1]:=(FloatToStrF(ArtT[i].Steuer,ffFixed,10,2)); Stringgrid1.Cells[6,i+1]:=(FloatToStrF(ArtT[i].GesPreis,ffFixed,10,2)); Stringgrid1.Cells[7,i+1]:=(ArtT[i].Tauschware_str); end; EMeng.Clear; end; end; function NextFreePostenID:integer; begin with FRech do begin DS_Posten.SelectSQL.Text:='SELECT * From POSTEN Order By ID'; DS_Posten.Open; DS_Posten.Last; result:=DS_Posten.FindField('ID').AsInteger+1; end; end; procedure TFRech.BSuchClick(Sender: TObject); var i : integer; begin if FArtikel.ShowModal=mrok then begin len:=length(ArtT); EMeng.SetFocus; EMeng.Text:='1'; EMeng.SelectAll; SetLength(ArtT,len+1); ArtT[len].Artikelnummer:=resArt.Artikelnummer; ArtT[len].Bezeichnung:=resArt.Bezeichnung; ArtT[len].Einheit:=resArt.Einheit; ArtT[len].Tauschware:=resArt.Tauschware; ArtT[len].Tauschmenge:=-resArt.Tauschmenge; ArtT[len].EzPreis:=resArt.VKPreisBrutto; ArtT[len].Steuer:=resArt.VKPreisBrutto - resArt.VKPreisNetto; end; end; procedure TFRech.Button1Click(Sender: TObject); begin if FKundenverwaltung.showmodal=mrok then begin LKdNr.Caption:=resKd.KdNr; LAnr.Caption:=Anreden[resKd.Anrede]; LName.Caption:=resKd.Name1; LTel.Caption:=resKd.Tel; LStr.Caption:=resKd.Strasse; LOrt.Caption:=resKd.PLZ+' '+resKd.Ort; LDat.Caption:=DateToStr(date); GHA:=GHLadenApfL(resKd.KdNr); GHQ:=GHLadenQuittL(resKd.KdNr); LGHA.Caption:=FloatToStr(GHLadenApfKG(resKd.KdNr)) +' kg/ ' + IntToStr(GHA)+ ' Liter'; LGHQ.Caption:=FloatToStr(GHLadenQuittKG(resKd.KdNr)) +' kg/ ' + IntToStr(GHQ)+ ' Liter'; end; end; procedure TFRech.Button2Click(Sender: TObject); // Der OK-Button var s:string; i,k :Integer; begin if (LKdNr.Caption<>'') and (GesGHA>=-GHA) and (GesGHQ>=-GHQ) then begin IBTransaction1.StartTransaction; s:=NextFreeVorgNr; with FAbgabe do begin DS_Vorgang.Open; DS_Vorgang.Insert; DS_Vorgang.FieldByName('Vorgangsnummer').AsString:=s; DS_Vorgang.FieldByName('Datum').AsDateTime:=Date; DS_Vorgang.FieldByName('Art').asinteger:=2; DS_Vorgang.FieldByName('Kunde').AsString:=FRech.LKdNr.Caption; DS_Vorgang.FieldByName('Posten').AsString:=''; DS_Vorgang.FieldByName('TauschApfelKg').AsFloat:=0; DS_Vorgang.FieldByName('TauschApfelL').AsInteger:=GesGHA; DS_Vorgang.FieldByName('AufkaufA').AsFloat:=0; DS_Vorgang.FieldByName('TauschQuitteKg').AsFloat:=0; DS_Vorgang.FieldByName('TauschQuitteL').AsInteger:=GesGHQ; DS_Vorgang.FieldByName('AufkaufQ').AsFloat:=0; DS_Vorgang.FieldByName('BetragNetto').AsFloat:=Sum; DS_Vorgang.FieldByName('BetragBrutto').AsFloat:=Sum-SumS; DS_Vorgang.Post; end; k:=NextFreePostenID; DS_Posten.Open; for i := 0 to length(ArtT) - 1 do begin DS_Posten.Insert; DS_Posten.FieldValues['ID']:=k+i; DS_Posten.FieldValues['Vorgangsnummer']:=s; DS_Posten.FieldValues['Artikelnummer']:=ArtT[i].Artikelnummer; DS_Posten.FieldValues['Menge']:=ArtT[i].Menge; DS_Posten.FieldValues['BetragNetto']:=ArtT[i].GesPreis; DS_Posten.FieldValues['BetragBrutto']:=ArtT[i].GesPreis-ArtT[i].Steuer; DS_Posten.Post; end; IBTransaction1.Commit; modalresult:=mrOk; clear; hide; showrep(s); end; end; procedure TFRech.Button3Click(Sender: TObject); begin clear; hide; end; procedure TFRech.clear; var i:integer; begin LKdNr.Caption:=''; LAnr.Caption:=''; LName.Caption:=''; LTel.Caption:=''; LStr.Caption:=''; LOrt.Caption:=''; LDat.Caption:=''; GHA:=0; GHQ:=0; LGHA.Caption:=''; LGHQ.Caption:=''; for i := 0 to length(ArtT) - 1 do begin ArtT[i].Artikelnummer:=''; ArtT[i].Bezeichnung:=''; ArtT[i].Tauschware_str:=''; ArtT[i].Einheit:=''; ArtT[i].Menge:=0; ArtT[i].Tauschware:=0; ArtT[i].Tauschmenge_ges:=0; ArtT[i].EzPreis:=0; ArtT[i].GesPreis:=0; ArtT[i].Steuer:=0; end; SetLength(ArtT,0); LRestA.Caption:=''; LRestQ.Caption:=''; LSum.Caption:=''; LSumS.Caption:=''; LSumA.Caption:=''; LSumQ.Caption:=''; EMeng.Clear; for i := 0 to Stringgrid1.RowCount - 1 do Stringgrid1.Rows[i].Clear; Stringgrid1.RowCount:=2; ResKd:=K2; ResArt:=A2; end; procedure TFRech.EMengExit(Sender: TObject); begin if resArt.Artikelnummer<>'' then begin ArtT[len].Menge:=StrToIntDef(EMeng.Text,0); ArtT[len].Tauschmenge_ges:=StrToIntDef(EMeng.Text,0)*ArtT[len].Tauschmenge; ArtT[len].GesPreis:=StrToIntDef(EMeng.Text,0)*ArtT[len].EzPreis; ArtT[len].Tauschware_str:=Tauschwaren[ArtT[len].Tauschware]+' ('+InttoStr(StrToIntDef(EMeng.Text,0)*ArtT[len].Tauschmenge)+' Liter)'; end else begin //ArtT[Stringgrid1.Row-1].Menge:=StrToIntDef(EMeng.Text,0); //ArtT[Stringgrid1.Row-1].Tauschmenge_ges:=StrToIntDef(EMeng.Text,0)*ArtT[len].Tauschmenge; //ArtT[Stringgrid1.Row-1].GesPreis:=StrToIntDef(EMeng.Text,0)*ArtT[len].EzPreis; //ArtT[Stringgrid1.Row-1].Tauschware_str:=Tauschwaren[ArtT[len].Tauschware]+' ('+InttoStr(StrToIntDef(EMeng.Text,0)*ArtT[len].Tauschmenge)+' Liter)'; end; ArtTabelle_show; resArt:=A2; gesamt; end; procedure TFRech.Gesamt; var i:integer; begin RestGHA:=0; RestGHQ:=0; GesGHA:=0; GesGHQ:=0; Sum:=0; SumS:=0; for i := 0 to length(ArtT) - 1 do begin if ArtT[i].Tauschware=1 then GesGHA:=GesGHA+ArtT[i].Tauschmenge_ges; if ArtT[i].Tauschware=2 then GesGHQ:=GesGHQ+ArtT[i].Tauschmenge_ges; Sum:=Sum+ArtT[i].GesPreis; SumS:=SumS+ArtT[i].Steuer; end; RestGHA:=GHA+GesGHA; RestGHQ:=GHQ+GesGHQ; LRestA.Caption:=inttostr(RestGHA)+' Liter'; LRestQ.Caption:=inttostr(RestGHQ)+' Liter'; LSum.Caption:=floattostrf(Sum,ffFixed,10,2); LSumS.Caption:=floattostrf(SumS,ffFixed,10,2); LSumA.Caption:=inttoStr(GesGHA)+' Liter'; LSumQ.Caption:=inttoStr(GesGHQ)+' Liter'; end; procedure TFRech.StringGrid1Click(Sender: TObject); begin if Stringgrid1.Row>0 then EMeng.Text:=inttostr(ArtT[Stringgrid1.Row-1].Menge); end; end.
Code:
Die Unit, die den Report erstellen soll.
unit UQuittung;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, frxClass, frxDBSet, DB, IBCustomDataSet, IBQuery, StdCtrls, IBDatabase; type TFQuittung = class(TForm) frxReport1: TfrxReport; frxDBDataset5: TfrxDBDataset; Button1: TButton; Memo1: TMemo; Button2: TButton; IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; IBDataSet1: TIBDataSet; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var FQuittung: TFQuittung; procedure showrep(VgNr:String); implementation {$R *.dfm} procedure showrep(VgNr:String); var a : TStrings; begin a:=TStringList.Create; with FQuittung do begin show; a.Clear; a.Add('SELECT V.VORGANGSNUMMER, V.DATUM, V.KUNDE, V.TAUSCHAPFELL, V.TAUSCHQUITTEL, V.BETRAGBRUTTO, ' + 'P.VORGANGSNUMMER, P.ARTIKELNUMMER, P.MENGE, P.BETRAGBRUTTO, A.ARTIKELNUMMER, A.BEZEICHNUNG, A.VKPREISBRUTTO, K.KUNDENNUMMER, K.ANREDE, K.NAME1, K.TEL, K.STRASSE, K.PLZ, K.ORT'); a.Add('FROM'); a.Add(' VORGANG V,'); a.Add(' POSTEN P,'); a.Add(' ARTIKEL A,'); a.Add(' KUNDEN K'); a.Add('WHERE'); a.Add(' V.VORGANGSNUMMER = '+chr(39)+VgNr+chr(39)+' AND'); a.Add(' P.VORGANGSNUMMER = V.Vorgangsnummer AND'); a.Add(' A.ARTIKELNUMMER = P.Artikelnummer AND'); a.Add(' V.KUNDE = K.KUNDENNUMMER'); IBDataSet1.SelectSQL:=a; IBDataSet1.RefreshSQL:=a; IBDataSet1.Open; IBDataset1.Refresh; frxReport1.ShowReport(true); Memo1.Lines:=IBDataSet1.SelectSQL; showmessage(IBDataSet1.FieldByName('Vorgangsnummer').AsString); end; end; procedure TFQuittung.Button1Click(Sender: TObject); begin frxReport1.ShowReport(true); end; procedure TFQuittung.Button2Click(Sender: TObject); begin showrep('V.00073'); // der letzte Datensatz end; end. Zur erklärung: Das soll eine Art Buchhaltungs-Programm werden für ein Lohnobst annahme- und umtauschstelle. (Ich weis, das es noch nicht wirklich effektiv arbeitet, aber es muss erstmal fertig werden. Überarbeitet wir später ![]()
Tobias
|
![]() |
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 |
![]() |
![]() |