⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tempmingdan.pas

📁 上传个考勤系统,希望别人也能用.该代码只能算初级的东东,软件代码复用性不高,重复代码比较多.唯一感觉有点取鉴的可能就是端口和dll的连接,还有线程的使用,本想改一改,但是手头没有考勤机了,对应考勤机是
💻 PAS
字号:
unit tempmingdan;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, GridsEh, DBGridEh, DB, ADODB,Hints;

type
  TdlgTempMingdan = class(TForm)
    dbTempMingdan: TDBGridEh;
    cbDepart: TComboBox;
    ckCard: TCheckBox;
    edCard: TEdit;
    ckID: TCheckBox;
    edID: TEdit;
    edName: TEdit;
    ckName: TCheckBox;
    btnSelect: TButton;
    btnClose: TButton;
    btnAllOut: TButton;
    btnSelectOut: TButton;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    ADOQuery2: TADOQuery;
    Label1: TLabel;
    lblFlag: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cbDepartChange(Sender: TObject);
    procedure btnSelectClick(Sender: TObject);
    procedure btnAllOutClick(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure btnSelectOutClick(Sender: TObject);
  private
    { Private declarations }
    SQL: string;
   procedure cbDepartShow;
   procedure cbDepartdbTempMingdanShow;
  public
    { Public declarations }
  end;

var
  dlgTempMingdan: TdlgTempMingdan;

implementation

uses timeclock;

{$R *.dfm}

procedure TdlgTempMingdan.FormCreate(Sender: TObject);
begin
  DataSource1.DataSet := ADOQuery1;
  dbTempMingdan.DataSource := DataSource1;
end;

procedure TdlgTempMingdan.cbDepartShow;
var i: integer;
begin
     cbDepart.Items.Clear;
     cbDepart.Items.Add('0:所有');
     if frmMain.cbCardUser.ItemIndex = 1 then
       begin
         ADOQuery2.Close;
         SQL := 'select * from s_bji';
         ADOQuery2.SQL.Text := SQL;
         ADOQuery2.Open;
         for i:=0 to ADOQuery2.RecordCount - 1 do
         begin
         cbDepart.Items.Add(ADOQuery2.FieldByName('bj_id').AsString+':'+ADOQuery2.FieldByName('bj_mcheng').AsString);
         ADOQuery2.Next;
         end;
       end
   else
       begin
         ADOQuery2.Close;
         SQL := 'select * from s_jses';
         ADOQuery2.SQL.Text := SQL;
         ADOQuery2.Open;
         for i:=0 to ADOQuery2.RecordCount - 1 do
         begin
         cbDepart.Items.Add(ADOQuery2.FieldByName('Jses_ID').AsString+':'+ADOQuery2.FieldByName('Jses_mcheng').AsString);
         ADOQuery2.Next;
         end;
       end;
end;

procedure TdlgTempMingdan.cbDepartdbTempMingdanShow;
begin
      ADOQuery1.Close();
   if frmMain.cbCardUser.ItemIndex = 1 then
      begin
      if cbDepart.ItemIndex = 0 then
      SQL := 'select a.xs_id as 学生ID,cast(a.cardID as varchar(20)) as 卡号, cast(b.xs_xming as varchar(20)) as 姓名,c.bj_mcheng as 所在班级 from n_xscard a inner join u_jbxxi b on a.xs_id = b.xs_id inner join s_bji c on c.bj_id=b.bj_id order by c.bj_id,a.xs_id'
      else
      SQL := 'select a.xs_id as 学生ID,cast(a.cardID as varchar(20)) as 卡号, cast(b.xs_xming as varchar(20)) as 姓名,c.bj_mcheng as 所在班级 from n_xscard a inner join u_jbxxi b on a.xs_id = b.xs_id inner join s_bji c on c.bj_id=b.bj_id where b.bj_id = left('''+cbDepart.Text+''',charindex('':'','''+cbDepart.Text+''')-1) order by c.bj_id,a.xs_id';
      end
   else
      begin
      if cbDepart.ItemIndex = 0 then
      SQL := 'select a.zh_id as 教师ID, cast(a.cardID as varchar(20)) as 卡号,cast(b.zhming as varchar(20)) as 姓名,c.jses_mcheng as 所在部门 from n_jscard a inner join s_zhu b on a.zh_id=b.zh_id inner join s_jses c on b.js_id = c.jses_id'
      else
      SQL := 'select a.zh_id as 教师ID, cast(a.cardID as varchar(20)) as 卡号,cast(b.zhming as varchar(20)) as 姓名,c.jses_mcheng as 所在部门 from n_jscard a inner join s_zhu b on a.zh_id=b.zh_id inner join s_jses c on b.js_id = c.jses_id where b.js_id=left('''+cbDepart.Text+''',charindex('':'','''+cbDepart.Text+''')-1) order by c.jses_id, a.zh_id';
      end;
      ADOQuery1.SQL.Text := SQL;
      ADOQuery1.Open;
end;




procedure TdlgTempMingdan.FormShow(Sender: TObject);
begin
  cbDepartShow;
  cbDepart.ItemIndex := 0;  
  ADOQuery1.Close;
  if frmMain.cbCardUser.ItemIndex = 1 then
  SQL := 'select a.xs_id as 学生ID,cast(a.cardID as varchar(20)) as 卡号, cast(b.xs_xming as varchar(20)) as 姓名,c.bj_mcheng as 所在班级 from n_xscard a inner join u_jbxxi b on a.xs_id = b.xs_id inner join s_bji c on c.bj_id=b.bj_id order by c.bj_id,a.xs_id'
  else
  SQL := 'select a.zh_id as 教师ID, cast(a.cardID as varchar(20)) as 卡号,cast(b.zhming as varchar(20)) as 姓名,c.jses_mcheng as 所在部门 from n_jscard a inner join s_zhu b on a.zh_id=b.zh_id inner join s_jses c on b.js_id = c.jses_id order by c.jses_id, a.zh_id';
  ADOQuery1.SQL.Text := SQL;
  ADOQuery1.Open;
end;

procedure TdlgTempMingdan.cbDepartChange(Sender: TObject);
begin
 cbDepartdbTempMingdanShow;
end;

procedure TdlgTempMingdan.btnSelectClick(Sender: TObject);
var i:integer;
begin
  if frmMain.cbCardUser.ItemIndex = 1 then
   begin
    SQL := 'select a.xs_id as 学生ID,cast(a.cardID as varchar(20)) as 卡号, cast(b.xs_xming as varchar(20)) as 姓名,c.bj_mcheng as 所在班级 from n_xscard a inner join u_jbxxi b on a.xs_id = b.xs_id inner join s_bji c on c.bj_id=b.bj_id';
     if (ckName.Checked = true) and (ckCard.Checked = true) and (ckID.Checked = true) then
       i:=0;
     if (ckName.Checked = true) and (ckCard.Checked = true) and (ckID.Checked = false) then
       i:=1;
     if (ckName.Checked = true) and (ckCard.Checked = false) and (ckID.Checked = false) then
       i:=2;
     if (ckName.Checked = true) and (ckCard.Checked = false) and (ckID.Checked = true) then
       i:=3;
     if (ckName.Checked = false) and (ckCard.Checked = true) and (ckID.Checked = true) then
       i:=4;
     if (ckName.Checked = false) and (ckCard.Checked = true) and (ckID.Checked = false) then
       i:=5;
     if (ckName.Checked = false) and (ckCard.Checked = false) and (ckID.Checked = true) then
       i:=6;

     case i of
     0:
     SQL := SQL+' where b.xs_xming = '''+edName.Text+''' and  a.CardID = '''+edCard.Text+''' and cast(a.xs_id as varchar) = '''+edID.Text+''' order by b.bj_id,a.xs_id' ;
     1:
     SQL := SQL+' where b.xs_xming = '''+edName.Text+''' and  a.CardID = '''+edCard.Text+''' order by b.bj_id,a.xs_id' ;
     2:
     SQL := SQL+' where b.xs_xming = '''+edName.Text+''' order by b.bj_id,a.xs_id' ;
     3:
     SQL := SQL+' where b.xs_xming = '''+edName.Text+''' and cast(a.xs_id as varchar) = '''+edID.Text+''' order by b.bj_id,a.xs_id' ;
     4:
     SQL := SQL+' where a.CardID = '''+edCard.Text+''' and cast(a.xs_id as varchar) = '''+edID.Text+''' order by b.bj_id,a.xs_id' ;
     5:
     SQL := SQL+' where a.CardID = '''+edCard.Text+''' order by b.bj_id,a.xs_id' ;
     6:
     SQL := SQL+' where cast(a.xs_id as varchar) = '''+edID.Text+''' order by b.bj_id,a.xs_id' ;
     end;
    end
   else
   begin
    SQL := 'select a.zh_id as 教师ID, cast(a.cardID as varchar(20)) as 卡号,cast(b.zhming as varchar(20)) as 姓名,c.jses_mcheng as 所在部门 from n_jscard a inner join s_zhu b on a.zh_id=b.zh_id inner join s_jses c on b.js_id = c.jses_id';
     if (ckName.Checked = true) and (ckCard.Checked = true) and (ckID.Checked = true) then
       i:=0;
     if (ckName.Checked = true) and (ckCard.Checked = true) and (ckID.Checked = false) then
       i:=1;
     if (ckName.Checked = true) and (ckCard.Checked = false) and (ckID.Checked = false) then
       i:=2;
     if (ckName.Checked = true) and (ckCard.Checked = false) and (ckID.Checked = true) then
       i:=3;
     if (ckName.Checked = false) and (ckCard.Checked = true) and (ckID.Checked = true) then
       i:=4;
     if (ckName.Checked = false) and (ckCard.Checked = true) and (ckID.Checked = false) then
       i:=5;
     if (ckName.Checked = false) and (ckCard.Checked = false) and (ckID.Checked = true) then
       i:=6;

     case i of
     0:
     SQL := SQL+' where b.zhming = '''+edName.Text+''' and  a.CardID = '''+edCard.Text+''' and cast(a.zh_id as varchar) = '''+edID.Text+''' order by c.jses_id, a.zh_id' ;
     1:
     SQL := SQL+' where b.zhming = '''+edName.Text+''' and  a.CardID = '''+edCard.Text+''' order by c.jses_id, a.zh_id' ;
     2:
     SQL := SQL+' where b.zhming = '''+edName.Text+''' order by c.jses_id, a.zh_id' ;
     3:
     SQL := SQL+' where b.zhming = '''+edName.Text+''' and cast(a.zh_id as varchar) = '''+edID.Text+''' order by c.jses_id, a.zh_id' ;
     4:
     SQL := SQL+' where a.cardID = '''+edCard.Text+''' and cast(a.zh_id as varchar) = '''+edID.Text+''' order by c.jses_id, a.zh_id' ;
     5:
     SQL := SQL+' where a.cardID = '''+edCard.Text+''' order by c.jses_id, a.zh_id' ;
     6:
     SQL := SQL+' where cast(a.zh_id as varchar) = '''+edID.Text+''' order by c.jses_id, a.zh_id' ;
     end;
    end;
    ADOQuery1.Close;
    ADOQuery1.SQL.Text := SQL;
    ADOQuery1.Open;
end;

procedure TdlgTempMingdan.btnAllOutClick(Sender: TObject);
begin
    try
    if not Assigned(dlgHints) then
     dlgHints := TdlgHints.Create(dlgHints);
     dlgHints.msg.Caption := '正在加载数据,请等候……';
     dlgHints.Show;
     dlgHints.Update;
     ADOQuery2.Close;
     ADOQuery2.SQL.Text := 'exec dbo.p_insert_kqmingdan null,'+inttostr(frmMain.cbListKind.ItemIndex)+','+inttostr(frmMain.pclk.clock_id)+','+lblFlag.Caption+','+inttostr(frmMain.cbCardUser.ItemIndex)+',0,'''+StringReplace(SQL,'''','''''',[rfReplaceAll])+'''';
     ADOQuery2.ExecSQL;
     finally
     dlgHints.Close;
     dlgTempMingdan.Close;
 end;
end;

procedure TdlgTempMingdan.btnCloseClick(Sender: TObject);
begin
  dlgTempMingdan.Close;
end;

procedure TdlgTempMingdan.btnSelectOutClick(Sender: TObject);
var
    i:integer;
    SQL:string;
begin
    with dbTempMingdan.DataSource.DataSet do
     begin
       try
         if not Assigned(dlgHints) then
           dlgHints := TdlgHints.Create(dlgHints);
           dlgHints.msg.Caption := '正在存入名单表中,请稍候......';
           dlgHints.Show;
           dlgHints.msg.Update;
           ADOQuery2.Close;

           for i:=0 to  dbTempMingdan.SelectedRows.Count - 1 do
           begin
           GotoBookMark(Pointer(dbTempMingdan.SelectedRows.Items[i]));
           ADOQuery2.SQL.Text := 'insert into t_kqmingdan values ('''+dbTempMingdan.Fields[1].AsString+''','+dbTempMingdan.Fields[0].AsString+','''+dbTempMingdan.Fields[2].AsString+''','+inttostr(frmMain.cbListKind.ItemIndex)+','+inttostr(frmMain.cbCardUser.ItemIndex)+',0,0,'+inttostr(frmMain.pclk.clock_id)+')';
           ADOQuery2.ExecSQL;
           end
       finally
          dlgHints.Close;
          dlgTempMingdan.Close;
       end;
     end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -