不好意思,是我没有粘贴完全
完整代码如下:
procedure TCT.BitBtn1Click(Sender: TObject);
var
lBizField:TBizField;
i,k,j:integer;
yf_ks,yf_js,nf_ks,nf_js,tj,rzrq,tj_gs:integer;//开始月份,结束月份,开始年份,结束年份,统计,入职日期
lContextCurrent: TContextCurrent;
tjr,tjrq:string;
yg_yf,yg_nf:integer;//员工月份,员工年份
begin
lContextCurrent := Business.Model.TContextCurrent.Create(self.Context);
tjr:=lContextCurrent.Operator.DisplayName;
tjrq:= Sysutils.DateToStr(Sysutils.now);
yf_ks:=dateUtils.MonthOf(DateTimePicker1.DateTime);
yf_js:=dateUtils.MonthOf(DateTimePicker2.DateTime);
nf_ks:=dateUtils.YearOf(DateTimePicker1.DateTime);
nf_js:=dateUtils.YearOf(DateTimePicker2.DateTime);
tj:=0;
if nf_ks=nf_js then //同年
begin
if yf_ks<yf_js then
begin
tj:=yf_js-yf_ks+1;
end;
end;
if nf_ks<nf_js then //不同年
begin
if nf_js-nf_ks=1 then
begin
tj:=12-yf_ks+yf_js+1;
if tj>12 then
begin
tj:=0
end;
end;
end;
setlength(str,tj);
for j:=0 to str.Length-1 do
begin
str[j]:=0;
end;
for j := 0 to TUserDataSet(DataSetZDYSJJ1).UserFieldCount-1 do
begin
TUserDataSet(DataSetZDYSJJ1).UserFields[0].Free;
end;
lBizField := TUserDataField.Create(DataSetZDYSJJ1);
lBizField.DataSet := DataSetZDYSJJ1;
lBizField.ID := 'tjr'; //设置字段ID
lBizField.DataType := TDataType.dtString; //设置字段类型
lBizField.Size := 32;
lBizField.DisplayName :='统计人 ';
lBizField := TUserDataField.Create(DataSetZDYSJJ1);
lBizField.DataSet := DataSetZDYSJJ1;
lBizField.ID := 'tjrq'; //设置字段ID
lBizField.DataType := TDataType.dtString; //设置字段类型
lBizField.Size := 32;
lBizField.DisplayName :='统计日期 ';
if tj>0 then
begin
for i:=0 to tj-1 do
begin
lBizField := TUserDataField.Create(DataSetZDYSJJ1);
lBizField.DataSet := DataSetZDYSJJ1;
lBizField.ID := sysUtils.IntToStr; //设置字段ID
lBizField.DataType := TDataType.dtString; //设置字段类型
lBizField.Size := 32;
if i+yf_ks>12 then
begin
lBizField.DisplayName :=sysUtils.IntToStr(nf_js)+'_'+sysUtils.IntToStr(i+yf_ks-12)+'月';
end
else
begin
lBizField.DisplayName :=sysUtils.IntToStr(nf_ks)+'_'+sysUtils.IntToStr(i+yf_ks)+'月';
end;
// datasetzdysjj1.Next;
end;
DataSource1.DataSet.Close;
DataSetBZSJJ.Close;
datasetzdysjj1.Close;
datasetzdysjj1.Open;
datasetzdysjj1.First;
datasetzdysjj1.Edit;
DataSetBZSJJ.Open;
DataSetZDYSJJ1.Fields[0].AsString:=lContextCurrent.Operator.DisplayName;
DataSetZDYSJJ1.Fields[1].AsString:=Sysutils.DateToStr(Sysutils.now);
for k:=0 to datasetbzsjj.RecordCount-1 do
begin
yg_yf:=dateUtils.MonthOf(DataSetBZSJJ.FieldByName['RZRQ'].AsDateTime);
yg_nf:=dateUtils.YearOf(DataSetBZSJJ.FieldByName['RZRQ'].AsDateTime);
for i:=2 to tj+2-1 do
begin
if i-2+yf_ks>12 then
begin
if (yg_yf=i-2+yf_ks-12) and (yg_nf=nf_js) then
begin
str[i-2]:=str[i-2]+1;
end;
end
else
begin
if (yg_yf=i-2+yf_ks) and (yg_nf=nf_ks) then
begin
str[i-2]:=str[i-2]+1;
end;
end;
end;
//dialogs.ShowMessage('dd');
DataSetBZSJJ.Next;
end;
for i:=2 to tj+2-1 do
begin
datasetzdysjj1.Fields[0].AsString:=tjr;
datasetzdysjj1.Fields[1].AsString:=tjrq;
datasetzdysjj1.Fields.AsString:=sYsutils.IntToStr(str[i-2])
end;
//datasetzdysjj1.Close;
end
else
begin
dialogs.ShowMessage('月份不能操过12个月!');
end;
end; |