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.TblQuery 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.LblQuery.Caption:='查询结果:出勤'+IntToStr(RecordCount)+'次';
                FrmDutyQueryed.ShowModal;
            end
            else
                Application.MessageBox('没有找到相应的出勤记录!','系统提示');
        end;
    end;
end;
一定给分,最快速度给分!!!

解决方案 »

  1.   

    var  //变量定义
        strEmpID:String;
        strDateStart,strDateEnd:String;
        TblEmp:TTable;
    begin
      //DlgQueryDuty应该是一个对话框,其中的 EditName 是录入的员工姓名
        if DlgQueryDuty.ShowModal=mrOK then //mrOK是对话框DlgQueryDuty 按确定返回
        begin
            //查找是否存在该员工
            TblEmp:=TTable.Create(self);     //动态创建TTable
            TblEmp.DatabaseName:='CompDuty'; //TblEmp连接数据库别名  'CompDuty'
            TblEmp.TableName:='Employee';    //TblEmp连接数据表      'Employee'
            TblEmp.Filtered:=True;           //TblEmp开启过滤
            TblEmp.Filter:='Name='''+Trim(DlgQueryDuty.EditName.Text)+''''; //TblEmp过滤,条件是员工姓名为DlgQueryDuty.EditName.Text的 (Trim是取出字符串两头空格的)
            TblEmp.Open;                     //TblEmp开启连接
            if TblEmp.Eof then               //判断TblEmp记录是否到尾,即判断是否为空
            begin
                Application.MessageBox('没有找到相应的员工!','系统提示');
                Exit;//退出
            end else
                strEmpID:=TblEmp.FieldByName('ID').AsString; //获得当前员工的记录的ID
            TblEmp.Close;                   //TblEmp断开连接
            strDateStart:=FormatDateTime('yyyy-mm-dd 00:00:00',DlgQueryDuty.DTPickerStart.Date);
            strDateEnd:=FormatDateTime('yyyy-mm-dd 12:00:00',DlgQueryDuty.DTPickerEnd.Date);
            //两个时间条件
            with FrmDutyQueryed.TblQuery 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.LblQuery.Caption:='查询结果:出勤'+IntToStr(RecordCount)+'次';
                    FrmDutyQueryed.ShowModal;
                end
                else
                    Application.MessageBox('没有找到相应的出勤记录!','系统提示');
            end;
        end;
    end;