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

📄 sendcard.pas

📁 pasa人力资源考勤管理系统
💻 PAS
📖 第 1 页 / 共 4 页
字号:
    procedure ppReport3BeforePrint(Sender: TObject);
    procedure ppReport3PreviewFormCreate(Sender: TObject);
    procedure ppReport4BeforePrint(Sender: TObject);
    procedure ppReport4PreviewFormCreate(Sender: TObject);
    procedure printClick(Sender: TObject);
    procedure DateTimePicker1CloseUp(Sender: TObject);
    procedure DateTimePicker2CloseUp(Sender: TObject);
    procedure DateTimePicker3CloseUp(Sender: TObject);
    procedure DateTimePicker4CloseUp(Sender: TObject);
    procedure DBGrid4TitleClick(Column: TColumn);
    procedure DBGrid3TitleClick(Column: TColumn);
    procedure DBGrid2TitleClick(Column: TColumn);
    procedure DBGrid5TitleClick(Column: TColumn);
    procedure DBGrid6TitleClick(Column: TColumn);
    procedure ADOjieguasiBeforePost(DataSet: TDataSet);
    procedure ADOguasiBeforePost(DataSet: TDataSet);
    procedure DBGrid7TitleClick(Column: TColumn);
    procedure DBGrid8TitleClick(Column: TColumn);
    procedure Edit3Exit(Sender: TObject);
    procedure Edit4Exit(Sender: TObject);
    procedure DBEdit8KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBEdit12KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure RadioGroup1Click(Sender: TObject);
    procedure RadioGroup2Click(Sender: TObject);
    procedure DBEdit10KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBEdit9KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    clk: TClockInfo;
    s:string;
    R: Boolean;
    vb:tbuttonset;
    readcardno:PRealCardInfo;
  public
    { Public declarations }
  end;

var
  formcard: Tformcard;
  fmat1,fmat2:string;
implementation

uses Functions, PrjConst, datamol, publicfunction, sendcardall, canfind,
  main;

{$R *.DFM}

procedure Tformcard.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  if fmat='/' then
  begin
   fmat1:='    /  /  ';
   fmat2:='    /  ' ;
  end;
  if fmat='-' then
  begin
   fmat1:='    -  -  ';
   fmat2:='    -  ';
  end;
  DateTimePicker1.DateTime:=now();
  DateTimePicker2.DateTime:=now();
  DateTimePicker3.DateTime:=now();
  DateTimePicker4.DateTime:=now();
  vb:=dbnavigator1.VisibleButtons;
  adodataset1.Close;
  adodataset1.CommandText:='select * from congcard order by workno,rq';
  adodataset1.Open;
  adodataset3.Close;
  adodataset3.CommandText:='select * from tuikuancard order by workno,rq';
  adodataset3.Open;
  ADOQrymealcard.Close;
  ADOQrymealcard.CommandText:='select * from mealcard order by workno';
  ADOQrymealcard.Open;
  adodataset2.close;
  adodataset2.CommandText:='select * from pub05010 ';
  adodataset2.Open;
  adodataset2.First;
  combobox4.Items.Clear;
  combobox4.Items.Add('全部');
  while not adodataset2.Eof do
  begin
   combobox4.Items.Add(adodataset2.fields[1].asstring);
   adodataset2.Next;
  end;
  combobox5.Items.Clear;
  combobox5.items:=combobox4.Items;
  combobox4.ItemIndex:=0;
  combobox5.ItemIndex:=0;
  ADODataSet5.close;
  Adodataset5.CommandText:='select * from per24010  where leave=0';
  ADODataSet5.Open;
  cbComPort.Items.Clear;
  for i:=1 to 16 do
    cbComPort.Items.Add(format('COM%d', [i]));
  cbcomPort.itemindex:=0;
  cbComRate.ItemIndex:=0;
  pagecontrol1.ActivePageIndex:=0;
  count.Enabled:=false;
  print.Enabled:=false;
end;
procedure Tformcard.wwDBLookupCombo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if key=VK_Down then
     (Sender as Twwdblookupcombo).dropdown;
end;

procedure Tformcard.ToolButton8Click(Sender: TObject);
begin
  close;
end;

procedure Tformcard.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ClosePort(@clk);
  action:=cafree;
  formcard:=nil;
end;

procedure Tformcard.ADOQrymealcardworknoChange(Sender: TField);
begin
  Adodataset5.close;
  Adodataset5.CommandText:='select * from per24010 where workno='''+sender.AsString+'''  and leave=0';
  Adodataset5.Open;
  if not Adodataset5.eof then
  begin
    ADOQrymealcardcardno.AsString:=Adodataset5cardno.asstring;
    ADOQrymealcardname.AsString:=Adodataset5name.AsString;
    ADOQrymealcardprof.AsString:=Adodataset5prof.AsString;
    ADOQrymealcarddept.AsString:=Adodataset5dept.AsString;
  end;
end;

procedure Tformcard.btnConnectClick(Sender: TObject);
var
  R: Boolean;
begin
  clk.Port:=cbComPort.ItemIndex+1;
  clk.baudrate:=StrToInt(cbComRate.Text);
  clk.clock_id:=StrToInt('$'+edClock_id.Text);
  R:=OpenPort(@clk);
  btnConnect.Enabled:=not R;
  btnDisConnect.Enabled:=R;
end;
procedure Tformcard.btnDisConnectClick(Sender: TObject);
begin
  ClosePort(@clk);
  btnConnect.Enabled:=True;
  btnDisConnect.Enabled:=False;
end;

procedure Tformcard.ADOQrymealcardAfterPost(DataSet: TDataSet);
begin
  with Datamod.Adoquery1 do
  begin
    close;
    Sql.Clear;
    SQL.Add('update mealcard set readok=1 where workno='''+ADOQrymealcardworkno.AsString+''' ');
    execsql;
    close;
  end;
end;

procedure Tformcard.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  dbgrid_keypress(sender,key);
end;

procedure Tformcard.ToolButton13Click(Sender: TObject);
begin
case pagecontrol1.ActivePageIndex of
1:begin
  adoguasi.Close;
  adoguasi.CommandText:='select * from guasi order by workno';
  adoguasi.open;
  end;
2:begin
  adojieguasi.Close;
  adojieguasi.CommandText:='select * from jieguasi order by workno';
  adojieguasi.open;
  end;
3:begin
  ADOQrymealcard.Filtered:=false;
  ADOQrymealcard.close;
  ADOQrymealcard.commandtext:='select * from mealcard order by workno';
  ADOQrymealcard.Open;
  end;
4:begin
    adodataset1.Close;
    adodataset1.CommandText:='select * from congcard order by workno,rq';
    adodataset1.Open;
  end;
5:begin
    adodataset3.Close;
    adodataset3.CommandText:='select * from tuikuancard order by workno,rq';
    adodataset3.Open;
  end;
6:begin
   case radiogroup1.ItemIndex of
   0:
     begin
       ADOdaycong.Close;
       ADOdaycong.CommandText:='select * from daycong order by workno,rq';
       ADOdaycong.Open;
       DataSource3.DataSet:=ADOdaycong;
     end;
   1:begin
       ADOdaytuikuan.Close;
       ADOdaytuikuan.CommandText:='select * from daytuikuan order by workno ,rq';
       ADOdaytuikuan.Open;
       DataSource3.DataSet:=ADOdaytuikuan;
     end;
    end;
  end;
7:begin
   case radiogroup2.ItemIndex of
   0:
     begin
       ADOmoncong.Close;
       ADOmoncong.CommandText:='select * From moncong order by workno,monthy';
       ADOmoncong.Open;
       adodataset6.close;
       adodataset6.Open;
       DataSource5.DataSet:=ADOmoncong;
       datasource6.DataSet:=adodataset6;
     end;
   1:begin
       ADOmontuikuan.Close;
       ADOmontuikuan.CommandText:='select * From montuikuan order by workno,monthy';
       ADOmontuikuan.Open;
       adodataset4.Close;
       adodataset4.Open;
       DataSource5.DataSet:=ADOmontuikuan;
       datasource6.DataSet:=adodataset4;
     end;
    end;


  end;
end;
end;

procedure Tformcard.ToolButton9Click(Sender: TObject);
begin
  if not assigned(formcardall) then
  formcardall:=Tformcardall.create(Application);
  formcardall.show;

end;

procedure Tformcard.ToolButton10Click(Sender: TObject);
begin
  if assigned(formcanfind) then  formcanfind.close;
  case pagecontrol1.ActivePageIndex of
  1: findrecorder(ADOQrymealcard,'ADOQrymealcard','mealcard');
  2: findrecorder(ADODataSet1,'ADODataSet1','congcard');
  3: findrecorder(ADODataSet3,'ADODataSet3','tuikuancard');
  4:begin
     case radiogroup1.ItemIndex of
       0: findrecorder(ADOdaycong,'ADOdaycong','daycong');
       1: findrecorder(ADOdaytuikuan,'ADOdaytuikuan','daytuikuan');
     end;
    end;
  5:begin
       case radiogroup2.ItemIndex of
       0: findrecorder(ADOmoncong,'ADOmoncong','moncong');
       1: findrecorder(ADOmontuikuan,'ADOmontuikuan','montuikuan');
     end;
    end;
  end;
end;

procedure Tformcard.DBGrid1TitleClick(Column: TColumn);
begin
  if s='ASC'then
    s:='DESC'
  else
    s:='ASC';
  ADOQrymealcard.Sort:=column.FieldName+ ' '+s
end;

procedure Tformcard.readcardClick(Sender: TObject);
var
  Money, Times, CardStyle, GroupStation, GroupId: Integer;
  day_consumed, day_times, c_month, c_day, c_flag: Integer;//ER-690卡扩展参数
  Pwd: array[0..50] of char;
  CardBuf, NameBuf: array[1..50] of char;
  cardno1:string;
begin
    if OpenPort(@clk) then
    begin
        cardno1:= '';
        Name1.Text := '';
        Money1.Text := '';
        Times1.Text := '';
        GroupStation := -1;
        GroupId := 0;
        FillChar(CardBuf, SizeOf(CardBuf), 0);
        FillChar(NameBuf, SizeOf(NameBuf), 0);
        FillChar(Pwd, SizeOf(Pwd), 0);
        if ReadICCardEx(clk.hPort, @CardBuf, @NameBuf, @Pwd, Money, Times, day_consumed, day_times, c_month, c_day, c_flag, GroupStation, GroupId, CardStyle) then
        begin
          //读卡成功
          case CardStyle of
            CARDSTYLE_OLDCARD: Combobox1.ItemIndex:=0; // 标准IC卡格式
            CARDSTYLE_NEWCARD: Combobox1.ItemIndex:=1; // 长IC卡格式
            CARDSTYLE_690CARD: combobox1.ItemIndex:=2; // ER-690新消费机卡格式
          else
            combobox1.ItemIndex:=-1;
          end;
        end
        else
        begin
      //读卡错误
         MsgBox(msg_read_iccard_error, MB_ICONERROR);
         exit;
        end;
        cardno1:= PChar(@CardBuf);
        Name1.Text:= PChar(@NameBuf);
        Money1.Text:= format('%g', [Money/10]);
        Times1.Text:= format('%d', [Times]);
        case pagecontrol1.ActivePageIndex of
        3:begin
              if not ADOqrymealcard.locate('cardno',cardno1,[]) then
                exit
              else
              begin
                ADOqrymealcard.Edit;
                ADOqrymealcardmoney2.AsString:=money1.Text;
                ADOqrymealcardtimes.AsInteger:=strtoint(times1.text);
                ADOqrymealcard.Post;
                Windows.Beep(2500, 100);
              end;
          end;
        4:begin
                adodataset2.Close;
                adodataset2.CommandText:='select workno from per24010 where cardno='''+cardno1+'''';
                adodataset2.open;
                adodataset1.Append;
                adodataset1cardno.AsString:=cardno1;
                adodataset1workno.Asstring:=adodataset2.fieldbyname('workno').asstring;
                dbedit2.SetFocus;
                Windows.Beep(2500, 100);
          end;
        5:begin
                adodataset2.Close;
                adodataset2.CommandText:='select workno from per24010 where cardno='''+cardno1+'''';
                adodataset2.open;
                adodataset3.Append;
                adodataset3cardno.AsString:=cardno1;
                adodataset3workno.Asstring:=adodataset2.fieldbyname('workno').asstring;
                dbedit5.SetFocus;
                Windows.Beep(2500, 100);
          end;
        end;
    end
    else
    begin
     application.MessageBox('没联接好设备,请及时联接!','提示',mb_ok+mb_iconwarning);
     ClosePort(@clk);
    end;
//    Windows.Beep(2500, 150);
end;

procedure Tformcard.ADOQrymealcardmoneyChange(Sender: TField);
begin
  ADOQrymealcard.Edit;
  ADOQrymealcardmoney2.AsFloat:=ADOQrymealcardmoney.AsFloat+ADOQrymealcardmoney1.AsFloat-ADOQrymealcarddecmoney.asfloat;
end;

procedure Tformcard.ADOQrymealcarddecmoneyChange(Sender: TField);
begin
  ADOQrymealcard.Edit;
  ADOQrymealcardmoney2.AsFloat:=ADOQrymealcardmoney.AsFloat+ADOQrymealcardmoney1.AsFloat-ADOQrymealcarddecmoney.asfloat;
end;

procedure Tformcard.ADODataSet1worknoChange(Sender: TField);
var c,n,d,p,g,s:string;
begin
  c:='';n:='';d:='';p:='';g:='';s:='';
  adodataset1.Edit;
  if adodataset1workno.asstring<>'' then
  begin
  getworker(adodataset1workno.asstring,c,n,d,p,g,s);
  if trim(n)='' then
    application.messagebox('该员工不存在','Warning',mb_ok+mb_iconwarning)
  else
    begin
      adodataset2.Close;
      adodataset2.CommandText:='select dept from pub05010 where dno='''+d+'''';
      adodataset2.Open;
      adodataset1cardno.asstring:=c;
      adodataset1name.asstring:=n;
      adodataset1dept.asstring:=adodataset2.fieldbyname('dept').asstring;
      adodataset1prof.asstring:=p;
      adodataset2.close;
      adodataset2.CommandText:='select workno,max(isnull(timesum,0)) timesum from congcard where workno='''+adodataset1workno.asstring+''' group by workno';
      adodataset2.Open;
      adodataset1.fieldbyname('timesum').AsInteger:=adodataset2.fieldbyname('timesum').asinteger+1;
      adodataset1times.AsInteger:=1;
    end;
  end;
end;

procedure Tformcard.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if (activecontrol=dbgrid1) or (activecontrol=dbgrid2)then
    exit;
   if key=#13 then
    begin
      key:=#0;
      if activecontrol=dbedit10 then
      begin
       // if adodataset1.State =dsinsert then
        // begin
        //  adodataset1.post;
        //  adodataset1.append;
        // end;
         dbedit2.setfocus;
      end
      else
        if activecontrol=dbedit9 then
        begin
      //   if adodataset3.State =dsinsert then
       //   begin
        //   adodataset3.post;
        //   adodataset3.Append;
        //  end;
          dbedit5.setfocus;
        end

           else
            selectnext(activecontrol,true,true);
    end;

end;

procedure Tformcard.pagecontrol1Change(Sender: TObject);
begin
  case pagecontrol1.activepageindex of
  1:
  begin

⌨️ 快捷键说明

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