📄 stockpile.~pa
字号:
unit Stockpile;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Mask, Spin;
type
TfrmStockpile = class(TForm)
GroupBox2: TGroupBox;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label28: TLabel;
Label29: TLabel;
Label30: TLabel;
cmdQuery: TButton;
GroupBox4: TGroupBox;
dgDetail: TDBGrid;
Label1: TLabel;
Label2: TLabel;
txtTotal: TEdit;
cmdExit: TButton;
Label3: TLabel;
txtNumber: TEdit;
txtBeginYear: TSpinEdit;
txtBeginMonth: TSpinEdit;
txtBeginDay: TSpinEdit;
txtEndYear: TSpinEdit;
txtEndMonth: TSpinEdit;
txtEndDay: TSpinEdit;
rptTotalData: TRadioButton;
rptOnpawn: TRadioButton;
rptOutpawn: TRadioButton;
rptDeadpawn: TRadioButton;
Label5: TLabel;
cmbCategory: TComboBox;
procedure cmdExitClick(Sender: TObject);
procedure cmdQueryClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
procedure IniCategoryBox;
public
{ Public declarations }
end;
var
frmStockpile: TfrmStockpile;
implementation
uses Msg, dmPawn, Pawn;
{$R *.DFM}
//初始化物品类别组合框
procedure TfrmStockpile.IniCategoryBox;
begin
with cmbCategory.Items do
begin
with dmPawnFrm do
begin
tblCategory.Open;
tblCategory.First ;
while not tblCategory.Eof do
begin
Add(tblCategory.fieldByName('Name').asstring);
tblCategory.Next ;
end;
tblCategory.Close;
end;
end;
//cmbCategory.ItemIndex :=0;
end;
procedure TfrmStockpile.cmdExitClick(Sender: TObject);
begin
close;
end;
procedure TfrmStockpile.cmdQueryClick(Sender: TObject);
var
BeginDateMark,EndDateMark:Boolean;
BeginCreateDate,EndCreateDate:TDateTime;
PawnCondition:string;
Sql:string;
Year,NYear,Month,NMonth,Day,NDay:word;
NowDate:TDateTime;
DaysElapsed:TDateTime;
NowToTen:TDateTime;
TotalMoney:Double;
TotalNumber:Integer;
CategoryMark:Boolean;
begin
DecodeDate(Now,Year,Month,Day);
NowDate:=EncodeDate(Year,Month,Day);
DaysElapsed:=NowDate-10;
DecodeDate(DaysElapsed,NYear,NMonth,NDay);
NowToTen:=EncodeDate(NYear,NMonth,NDay);
Sql:='SELECT d.PawnTicketCode,d.PawnLineNum,d.PawnName, d.PawnCategory,';
Sql:=Sql+ 'd.PawnSpec, d.PawnNumber, d.AppriseValue, d.DiscountRate,';
Sql:=Sql+ 'd.PawnMoney,h.PawnBeginDate,h.PawnEndDate FROM PawnDetail_Tbl AS d, ';
Sql:=Sql+ 'Stockpile_Tbl AS s INNER JOIN PawnHead_Tbl AS h ON h.PawnTicketCode=s.PawnCode ';
Sql:=Sql+ 'WHERE d.PawnTicketCode=h.PawnTicketCode and d.Status='''' and True ';
//Sql:=Sql+ 'and h.PawnEndDate<:DateElapsed and True ';
//Sql:=Sql+'where and True ';
//取出起始时间
if txtBeginYear.Value<>0 then
begin
BeginCreateDate:=EncodeDate(txtBeginYear.Value,
txtBeginMonth.Value,txtBeginDay.Value);
BeginDateMark:=True;
end
else
begin
txtBeginYear.Value:=Year;
BeginCreateDate:=EncodeDate(txtBeginYear.Value,
txtBeginMonth.Value,txtBeginDay.Value);
BeginDateMark:=True;
end;
{if txtBeginYear.Value<>0 then
begin
if txtBeginMonth.Text <>'' then //年不为空,月不为空
begin
if txtBeginDay.Text <>''then //年月日都不为空
begin
BeginCreateDate:=EncodeDate(txtBeginYear.Value,
txtBeginMonth.Value,txtBeginDay.Value);
BeginDateMark:=True;
end
else //起始日期为空,则为此月的第一天1号
begin
BeginCreateDate:=EncodeDate(strtoint(trim(txtBeginYear.text)),
strtoint(trim(txtBeginMonth.text)),1);
BeginDateMark:=True;
end;
end
else //起始月份为空,年不为空
begin
if txtBeginDay.Text<>''then //年日不为空,则提示月必须不为空
begin
messagedlg(Msg.MsgBeginMonthInfro,mtWarning,[mbYes],0);
txtBeginMonth.SetFocus ;
end
else //年不为空,月日为空则为1月1日
begin
BeginCreateDate:=EncodeDate(strtoint(trim(txtBeginYear.text)),1,1);
BeginDateMark:=True;
end;
end;
end
else //若年为空,则继续判断月日是否为空
begin
if txtBeginMonth.Text<>''then
begin //若年为空,月不为空则提示必须输入年分。
messagedlg(Msg.MsgBeginYearInfo ,mtWarning,[mbYes],0);
txtBeginYear.SetFocus ;
end
else //若年为空,月也为空
begin
if txtBeginDay.Text<>''then
begin //若年月为空,日不为空则提示必须输入年月
messagedlg(Msg.MsgBeginMYInfo,mtWarning,[mbYes],0);
txtBeginYear.SetFocus ;
end
else //若年月日均为空
BeginDateMark:=False;
end;
end;}
//取出终到时间
if txtEndYear.Value<>0 then
begin
EndCreateDate:=EncodeDate(txtEndYear.Value,
txtEndMonth.Value,
txtEndDay.Value);
EndDateMark:=True;
end
else
begin
txtEndYear.Value:=Year;
EndCreateDate:=EncodeDate(txtEndYear.Value,
txtEndMonth.Value,
txtEndDay.Value);
EndDateMark:=True;
end;
{if txtEndYear.Text<>'' then
begin
if txtEndMonth.Text <>'' then //年不为空,月不为空
begin
if txtEndDay.Text <>''then //年月日都不为空
begin
EndCreateDate:=EncodeDate(strtoint(trim(txtEndYear.text)),
strtoint(trim(txtEndMonth.text)),
strtoint(trim(txtEndDay.text)));
EndDateMark:=True;
end
else //终到日期为空,则为此月的第一天1号
begin
EndCreateDate:=EncodeDate(strtoint(trim(txtEndYear.text)),
strtoint(trim(txtEndMonth.text)),1);
EndDateMark:=True;
end;
end
else //终到月份为空,年不为空
begin
if txtEndDay.Text<>''then //年日不为空,则提示月必须不为空
begin
messagedlg(Msg.MsgEndMonthInfro,mtWarning,[mbYes],0);
txtEndMonth.SetFocus ;
exit;
end
else //年不为空,月日为空则为1月1日
begin
EndCreateDate:=EncodeDate(strtoint(trim(txtEndYear.text)),1,1);
EndDateMark:=True;
end;
end;
end
else //若年为空,则继续判断月日是否为空
begin
if txtEndMonth.Text<>''then
begin //若年为空,月不为空则提示必须输入年分。
messagedlg(Msg.MsgEndYearInfo ,mtWarning,[mbYes],0);
txtEndYear.SetFocus ;
exit;
end
else //若年为空,月也为空
begin
if txtEndDay.Text<>''then
begin //若年月为空,日不为空则提示必须输入年月
messagedlg(Msg.MsgEndMYInfo,mtWarning,[mbYes],0);
txtEndYear.SetFocus ;
exit;
end
else //若年月日均为空
EndDateMark:=False;
end;
end;}
if BeginDateMark=False then //若起始时间不存在,则查看是否有终到日期,如无终到日期则查询时不必看时间
begin //如有终到日期,则提示必须输入起始日期
if EnddateMark=True then
begin
messagedlg(Msg.MsgBeginDateInfo,mtWarning,[mbYes],0);
txtBeginYear.SetFocus ;
end;
end;
//写入Sql
if BeginDateMark=True then
begin //有起始日期
if EndDateMark=True then
Sql:=Sql+'and h.CreateDate>=:BeginCreateDate and h.CreateDate<=:EndCreateDate '
else
Sql:=Sql+'and h.CreateDate>=:BeginCreateDate ';
end;
//判断是否有在当、逾期、绝当
PawnCondition:='False';
if rptOnpawn.Checked =True then //若是在当
PawnCondition := PawnCondition + ' or h.PawnEndDate>:Today';
if rptOutpawn.Checked =True then //若是逾期 outtime=today-10
PawnCondition := PawnCondition + ' or h.PawnEndDate<:Today ';//and h.PawnEndDate>:OutTime ';
if rptDeadPawn.Checked =True then //若是绝当
PawnCondition := PawnCondition + ' or h.Status=''绝当'' ';//h.PawnEndDate<:OutTime ';//and
if pawncondition<>'False' then
Sql := Sql+ 'and (' + PawnCondition +') ';
if cmbCategory.Text<>'' then
begin
CategoryMark:=True;
Sql:=Sql+'and PawnCategory=:Category ';
end;
with dmPawnFrm do
begin
dqDetailUn.Close;
dqDetailUn.SQL.Clear;
//Sql:=Sql+' order by PawnTicketCode ';
dqDetailUn.SQL.Add(Sql);
if CategoryMark=True then
begin
CategoryMark:=False;
dqDetailUn.ParamByName('Category').asstring:=cmbCategory.Text;
end;
if BeginDateMark=True then
begin
BeginDateMark:=False;
if EndDateMark=True then
begin //若起始、终到日期均有则取出起始、终到日期
EndDateMark:=False;
dqDetailUn.ParamByName ('BeginCreateDate').asDateTime:=BeginCreateDate;
dqDetailUn.ParamByName ('EndCreateDate').asDateTime:=EndCreateDate;
end
else //若只有起始日期,则只取出起始日期
dqDetailUn.ParamByName ('BeginCreateDate').AsDateTime:=BeginCreateDate;
end;
if rptOnpawn.Checked =True then
dqDetailUn.ParamByName ('Today').AsDateTime:=NowDate; //EncodeDate(Year,Month,Day);
if rptOutpawn.Checked =True then
begin
dqDetailUn.ParamByName ('Today').AsDateTime:=NowDate; //EncodeDate(Year,Month,Day);
//dqDetailUn.ParamByName ('OutTime').AsDateTime:=NowToTen; //Pawn.OutPawnLimit;
end;
//if rptDeadPawn.Checked=True then
//dqDetailUn.ParamByName ('OutTime').AsDateTime:=NowToTen; //Pawn.OutPawnLimit;
dqDetailUn.Open;
TotalMoney:=0;
TotalNumber:=0;
if dqDetailUn.IsEmpty=False then
begin
dqDetailUn.First;
while not dqDetailUn.Eof do
begin
TotalMoney:=dqDetailUn.fieldByName('PawnMoney').asfloat+TotalMoney;
TotalNumber:=dqDetailUn.fieldByName('PawnNumber').asinteger+TotalNumber;
dqDetailUn.Next;
end;
end;
txtTotal.Text:=format('%12.1f',[TotalMoney]);
txtNumber.Text:=inttostr(TotalNumber);
end;
end;
procedure TfrmStockpile.FormShow(Sender: TObject);
var
Present: TDateTime;
Year, Month, Day: Word;
begin
Present:= Now;
DecodeDate(Present, Year, Month, Day);
txtBeginYear.Value :=Year;
txtBeginMonth.Value :=Month;
txtBeginDay.Value:=Day;
txtEndYear.Value:=Year;
txtEndMonth.Value:=Month;
txtEndDay.Value:=Day;
IniCategoryBox;
dmPawnFrm.dqDetailUn.Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -