📄 unitmonthsum.pas
字号:
unit Unitmonthsum;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, Db, StdCtrls, ComCtrls, ExtCtrls, Buttons;
type
TForm3 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Panel1: TPanel;
DateTimePicker_From: TDateTimePicker;
DateTimePicker_To: TDateTimePicker;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Bevel1: TBevel;
Label1: TLabel;
ListBox1: TListBox;
Label2: TLabel;
Button1: TButton;
Table1: TTable;
Table2: TTable;
Query1: TQuery;
Query2: TQuery;
Query3: TQuery;
Query4: TQuery;
Table3: TTable;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
procedure zdymaterCheckDiary();
function zdyGetmaterCheckDate():TDate;
end;
var
form3:Tform3;
implementation
uses Unit_Mater_PrtSum, IniFiles, Unit_Mater_Main, UnitProdStock,
UnitProdkhjz;
{$R *.DFM}
function Tform3.zdyGetmaterCheckDate():TDate; //函数声明 查询上月结账日期
var
dCheck:TDate;
begin
with table3 do
begin
open;
if recordcount = 0 then
begin
Result :=strtodatetime('00-01-01');//DateTimePicker_From.date;
table3.close;
panel2.caption:='起始日期';
DateTimePicker_From.visible:=true;
DateTimePicker_From.enabled:=true;
exit;
end;
//first;
last;
dCheck:=fieldbyname('jzrq').asdatetime;
filter:='';
filtered:=false;
close;
result := dCheck;
end;
end;
procedure Tform3.FormCreate(Sender: TObject);
var
fm,fy:integer;
tm,ty:integer;
// d:Tdate;
begin
tm:=strtoint(formatdatetime('m',date)) ;
ty:=strtoint(formatdatetime('yyyy',date));
fm:=tm-1;
fy:=ty;
if tm = 1 then
begin
fm:=12;
fy:=fy-1;
end; //if
if (fy mod 4 <> 0) and (fm = 2) then
DateTimePicker_From.date:= strtodate(inttostr(fy) + '-' + inttostr(fm)+ '-28')
else
DateTimePicker_From.date:= strtodate(inttostr(fy) + '-' + inttostr(fm)+ '-29');
DateTimePicker_To.date:=strtodate(inttostr(ty) + '-' + inttostr(tm)+ '-28');
end;
procedure Tform3.BitBtn1Click(Sender: TObject);
var
d_from,d_to:Tdate;
fFrom:Tdate ;
name:string;
s_from,s_to:string;
n_DateMinus:integer;
JLSumSys:TIniFile;
er,Sum_hk,per,zjbl:real;
begin
with query1 do
begin
close;
sql.Clear;
sql.Add('select * from khjzrq');
open;
if recordcount<>0 then
DateTimePicker_From.date:=zdyGetmaterCheckDate;
end;
// frmProdStock.visible:=false;
//fFrom:=zdyGetmaterCheckDate; //上次结帐日期
//fFrom:=DateTimePicker_From.date; //上次结帐日期送起始日
//zdymaterCheckDiary;//上次结帐日期
if (zdyGetmaterCheckDate >= strtodate(datetostr(DateTimePicker_To.date ))) then
begin
showmessage('您选择的结帐日期早于上次结帐日期!'+#13+#13+'上次结帐日期是:'+datetostr(zdyGetmaterCheckDate));
exit;
end;
with query1 do
begin
close;
sql.Clear;
sql.Add('delete from byqk');
execsql;
end; //with
with query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from commManufacturer');
Open;
First;
while not eof do
begin
er:=0;
per:=0;
zjbl:=0;
sum_hk:=0;
query2.Close;
query2.SQL.Clear;
query2.SQL.add('select prodid,number from prodoutcard where manufacturerid=:manu');
query2.SQL.Add('and outdate>:from and outdate<=:to');
query2.ParamByName('from').AsDate:=DateTimePicker_From.Date;
query2.ParamByName('to').AsDate:=DateTimePicker_to.Date;
query2.ParamByName('manu').AsString:=Fieldbyname('manufacturerid').asstring;
query2.open;//找出所有产品ID和数量
// if query2.RecordCount=0 then
// break;
query2.First;
while not query2.Eof do
begin //查销售单价
query3.Close;
query3.SQL.Clear;
query3.SQL.Add('select sellprice from proddictionary where prodid=:id');
query3.ParamByName('id').AsString:=query2.Fieldbyname('prodid').asstring;
query3.open;
//query3.First;
per:=query2.Fieldbyname('number').asfloat;
zjbl:=query3.Fieldbyname('sellprice').asfloat;
zjbl:=zjbl*per;
sum_hk:=sum_hk+zjbl;//计算本期货款
sum_hk:=strtofloat(formatfloat('0.00',sum_hk));
query2.Next;
end; //查本月客户交款金额
query4.Close;
query4.SQL.Clear;
query4.SQL.Add('SELECT sum(je) as bysk1 from prodzmb where khmc=:kh');
query4.SQL.Add('and skrq>:from and skrq<=:to');
query4.ParamByName('from').AsDate:=DateTimePicker_From.Date;
query4.ParamByName('to').AsDate:=DateTimePicker_to.Date;
query4.ParamByName('kh').asstring:=query1.fieldvalues['manufacturer'];
query4.open;
er:=query4.Fieldbyname('bysk1').asfloat;
query3.Close;//查上月欠款
query3.SQL.Clear;
query3.SQL.Add('SELECT qk from syqk where khname=:kh and bdate=:from ');
query3.ParamByName('from').AsDatetime:=zdyGetmaterCheckDate;
query3.ParamByName('kh').asstring:=query1.fieldbyname('manufacturer').asstring;
query3.open;
//showmessage(floattostr(query3.Fieldbyname('qk').asfloat));
table1.open;
table1.insert;
table1.FieldValues['syqk']:=query3.Fieldbyname('qk').asfloat;
table1.FieldValues['manufacturer']:=query1.FieldValues['manufacturer'];
//showmessage(floattostr(sum_hk));
table1.Fieldbyname('byhk').asfloat:=sum_hk;
table1.Fieldbyname('ysk').asfloat:=er;
table1.Fieldbyname('qk').asfloat:=query3.Fieldbyname('qk').asfloat+sum_hk-er;
table1.Post;
table2.open;
table2.append;
table2.FieldByName('khname').asstring:=query1.Fieldbyname('manufacturer').asstring;
//table2.FieldValues['khname']:=query1.FieldValues['manufacturer'];
// table2.FieldValues['qk']:=query3.Fieldbyname('qk').asfloat+sum_hk-er;
table2.FieldByName('qk').asfloat:=query3.Fieldbyname('qk').asfloat+sum_hk-er;
table2.FieldByName('bdate').asdatetime:=form3.DateTimePicker_To.date;
table2.Post;
table2.close;
//showmessage(query1.fieldvalues['manufacturer']);
// end;
query1.Next;
end;
end;
table3.open;
table3.append;
table3.FieldByName('jzrq').asdatetime:=form3.DateTimePicker_To.date;
table3.post;
zdymaterCheckDiary(); //显示结帐日期表
Panel2.caption:='只设截止日期';
DateTimePicker_From.visible:=false;
DateTimePicker_From.enabled:=false;
Label1.caption:='上次结帐日期是'+datetostr( zdyGetmaterCheckDate);
if Panel2.caption='起始日期' then
Label1.caption:='没结过帐,请输入结帐起始日期:';
form5.Table1.Open;
//hide;
Form5.showmodal;
// form3.visible:=false;
// exit;
end;
procedure Tform3.BitBtn2Click(Sender: TObject);
begin
frmProdStock.show;
close;
end;
procedure Tform3.FormShow(Sender: TObject);
begin
zdymaterCheckDiary(); //显示结帐日期表
Panel2.caption:='只设截止日期';
DateTimePicker_From.visible:=false;
DateTimePicker_From.enabled:=false;
Label1.caption:='上次结帐日期是'+datetostr( zdyGetmaterCheckDate);
if Panel2.caption='起始日期' then
Label1.caption:='没结过帐,请输入结帐起始日期:';
DateTimePicker_From.date :=date-30;
DateTimePicker_To.date :=date;
end;
procedure Tform3.zdymaterCheckDiary();
var
dDate:Tdate;
begin
Listbox1.Clear;
with table3 do
begin
open;
first;
while not eof do
begin
dDate:=fieldbyname('jzrq').asdatetime;
listbox1.items.append(datetostr(dDate));
next;
end; //while
close;
end; //with
listbox1.ItemIndex:=listbox1.Items.Count-1 ;
end;
procedure Tform3.Button1Click(Sender: TObject);
var
dDate:Tdate;
JLSumSys:TIniFile;
begin
//===================================
// 修改 ProdCheckDiary最后一条记录
//===================================
dDate:=zdyGetmaterCheckDate;
with table3 do
begin
open;
last;
if recordcount = 0 then
begin
panel2.caption:='起始日期';
Label1.caption:='没结过帐,请输入结帐起始日期:';
DateTimePicker_From.visible:=true;
DateTimePicker_From.enabled:=true;
zdyGetmaterCheckDate;
zdymaterCheckDiary;
table3.close;
exit;
end;
delete;
with query1 do
begin
close;
sql.Clear;
sql.Add('delete from syqk where bdate=:kh');
ParamByName('kh').asdatetime:=dDate;
execsql;
end; //with
if recordcount = 0 then
begin
panel2.caption:='起始日期';
Label1.caption:='没结过帐,请输入结帐起始日期:';
DateTimePicker_From.visible:=true;
DateTimePicker_From.enabled:=true;
zdyGetmaterCheckDate;
zdymaterCheckDiary;
table3.close;
exit;
end;
zdymaterCheckDiary;//上次结帐日期
close;
end; //with //写入Ini文件 结账日期
zdyGetmaterCheckDate; //显示修改后的日期
Label1.caption:='上次结帐日期是'+datetostr( zdyGetmaterCheckDate);
//dDate:=zdyGetmaterCheckDate; //显示修改后的日期
end;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
frmProdStock.show;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -