procedure TFrmmain.BtnquerydutyClick(Sender: TObject);var strEmpID:String; strDateStart,strDateEnd:String; TblEmp:TTable; begin if DlgQueryDuty.ShowModal=mrOK then begin //查找是否存在该员工 TblEmp:=TTable.Create(self); TblEmp.DatabaseName:='CompDuty'; TblEmp.TableName:='Employee'; TblEmp.Filtered:=True; TblEmp.Filter:='Name='''+Trim(DlgQueryDuty.EditName.Text)+''''; TblEmp.Open; if TblEmp.Eof then begin Application.MessageBox('没有找到相应的员工!','系统提示'); Exit;//退出 end else strEmpID:=TblEmp.FieldByName('ID').AsString; TblEmp.Close; strDateStart:=FormatDateTime('yyyy-mm-dd 00:00:00',DlgQueryDuty.DTPickerStart.Date); strDateEnd:=FormatDateTime('yyyy-mm-dd 12:00:00',DlgQueryDuty.DTPickerEnd.Date); with FrmDutyQueryed.Tb1Query do begin //如果表处于打开状态,先关闭它 if Active then Active:=False; Filter:='EmpID='+strEmpID+' and DutyDate >='''+strDateStart; Filter:=Filter+''' and DutyDate <='''+strDateEnd+''''; Filtered:=True; Active:=True;
//查看是否找到相应的记录?如果找到,则显示这条记录 if not Eof then begin FrmDutyQueryed.Lb1Query.Caption:='查询结果:出勤'+IntToStr(recordCount)+'次'; FrmDutyQueryed.ShowModal; end else Application.MessageBox('没有找到相应的出勤记录!','系统提示'); end; end;end;
Filtered := false; Filter:='EmpID='+strEmpID+' and DutyDate >='''+strDateStart; Filter:=Filter+''' and DutyDate <='''+strDateEnd+''''; Filtered:=True;
begin
datetimepicker1.date:=date;end;
还有一个问题就是:统计所有人的出勤次数是正确的,用的是SQL,利用COUNT as times许每个人的次数,但是针对于某个人的出勤次数查询就不对了,查询界面显示的出勤次数为所有人的总次数.用了Recordcount.这是什么问题哦?
设置datetimepicker控件的maxdate和mindate属性
2.
统计时查询条件设置不对
strEmpID:String;
strDateStart,strDateEnd:String;
TblEmp:TTable;
begin
if DlgQueryDuty.ShowModal=mrOK then
begin
//查找是否存在该员工
TblEmp:=TTable.Create(self);
TblEmp.DatabaseName:='CompDuty';
TblEmp.TableName:='Employee';
TblEmp.Filtered:=True;
TblEmp.Filter:='Name='''+Trim(DlgQueryDuty.EditName.Text)+'''';
TblEmp.Open;
if TblEmp.Eof then
begin
Application.MessageBox('没有找到相应的员工!','系统提示');
Exit;//退出
end else
strEmpID:=TblEmp.FieldByName('ID').AsString;
TblEmp.Close;
strDateStart:=FormatDateTime('yyyy-mm-dd 00:00:00',DlgQueryDuty.DTPickerStart.Date);
strDateEnd:=FormatDateTime('yyyy-mm-dd 12:00:00',DlgQueryDuty.DTPickerEnd.Date); with FrmDutyQueryed.Tb1Query do
begin
//如果表处于打开状态,先关闭它
if Active then
Active:=False;
Filter:='EmpID='+strEmpID+' and DutyDate >='''+strDateStart;
Filter:=Filter+''' and DutyDate <='''+strDateEnd+'''';
Filtered:=True;
Active:=True;
//查看是否找到相应的记录?如果找到,则显示这条记录
if not Eof then
begin
FrmDutyQueryed.Lb1Query.Caption:='查询结果:出勤'+IntToStr(recordCount)+'次';
FrmDutyQueryed.ShowModal;
end
else
Application.MessageBox('没有找到相应的出勤记录!','系统提示');
end;
end;end;
Filter:='EmpID='+strEmpID+' and DutyDate >='''+strDateStart;
Filter:=Filter+''' and DutyDate <='''+strDateEnd+'''';
Filtered:=True;