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

📄 cwa510_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit Cwa510_01;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Bas100_01, Grids, FR_DSet, FR_DBSet,
  FR_Class, Db, Menus, StdCtrls, ExtCtrls, ComCtrls, ToolWin,
  Mask, Buttons, Variants, ADODB;

type
  TCwa510_01Form = class(TBas100_01Form)
    dsCwa510: TDataSource;
    GroupBox1: TGroupBox;
    lblLength: TLabel;
    lblFormat: TLabel;
    lblID: TLabel;
    lblDate: TLabel;
    lblHour: TLabel;
    lblMinute: TLabel;
    lblInOut: TLabel;
    edtLength: TEdit;
    edtFormat: TMaskEdit;
    edtID: TEdit;
    edtDate: TEdit;
    edtHour: TEdit;
    edtMinute: TEdit;
    edtInOut: TEdit;
    bbtnOk: TBitBtn;
    bbtnExit: TBitBtn;
    Label8: TLabel;
    OpenDialog1: TOpenDialog;
    ProgressBar1: TProgressBar;
    cbType: TComboBox;
    qryCwa510: TADOQuery;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure bbtnOkClick(Sender: TObject);
    procedure bbtnExitClick(Sender: TObject);
    procedure edtLengthKeyPress(Sender: TObject; var Key: Char);
  private
    procedure SetInterface;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Cwa510_01Form: TCwa510_01Form;

implementation

uses CommFun, SYSDATA;

{$R *.DFM}

procedure TCwa510_01Form.SetInterface;
begin
  Caption:=GetDBString('CWA51001001');  //考勤资料导入
  Label8.Caption:=GetDBString('CWA51001002');  //这个操作可能需要几分钟时间,请耐心等候......
  GroupBox1.Caption:=GetDBString('CWA51001003');  //数据读取格式:
  lblLength.Caption:=GetDBString('CWA51001004');  //读取长度
  lblFormat.Caption:=GetDBString('CWA51001005');  //读取格式
  lblID.Caption:=GetDBString('CWA51001006');  //卡号段
  lblDate.Caption:=GetDBString('CWA51001007');  //日期段
  lblHour.Caption:=GetDBString('CWA51001008');  //小时段
  lblMinute.Caption:=GetDBString('CWA51001009');  //分钟段
  lblInOut.Caption:=GetDBString('CWA51001010');  //进出段
  bbtnOk.Caption:=GetDBString('CWA51001011');  //确定(&O)
  bbtnExit.Caption:=GetDBString('CWA51001012');  //退出(&X) }
  cbType.Items.Clear;
  cbType.Items.Add(GetDBString('COM00004014'));  //文本文件
  cbType.Items.Add(GetDBString('COM00004015'));  //十六进制
  cbType.Items.Add(GetDBString('COM00004016'));  //八进制
  cbType.ItemIndex:=0;
end;

procedure TCwa510_01Form.FormCreate(Sender: TObject);
var
  S:String;
begin
  inherited;
  //设置界面信息
  SetInterface;
  S:=GetSysParams('CWA0007');
  qryCwa510.Open;
  edtLength.Text:=copy(S,2,2);  //读取长度
  edtFormat.Text:=copy(S,4,9);  //读取格式
  edtID.Text:=copy(S,13,1);  //卡号段
  edtDate.Text:=copy(S,14,1);  //日期段
  edtHour.Text:=copy(S,15,1);  //小时段
  edtMinute.Text:=copy(S,16,1);  //分钟段
  edtInOut.Text:=copy(S,17,1);  //进出段
  if copy(S,18,1)<>'' then cbType.ItemIndex:=StrToInt(copy(S,18,1));  //进制转换
  Label8.Alignment:=taLeftJustify;
end;

procedure TCwa510_01Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  qryCwa510.Close;
  Action:=caFree;
end;

procedure TCwa510_01Form.bbtnOkClick(Sender: TObject);
var
  Ch:Char;
  I,J,K,N:Integer;
  St,St2,St3:String;
  F1:TextFile;
  AID,ATime,AInOut:string;
  ADate:TDateTime;
begin
  inherited;
//确定
  ADate:=0;
  if edtLength.Text='' then Exit;
  St3:=''; J:=0; St2:=Trim(Copy(edtFormat.Text,1,1));
  if (St2='') or (St2='0') then
  begin
    ShowMsg('UMS10000045');  //读取格式输入错误
    edtFormat.SetFocus;
    Abort;
  end else
  begin
    J:=J+StrToInt(St2);
    St:=St+St2+'.';St3:=St3+St2;
    St2:=Trim(Copy(edtFormat.Text,3,1));
    if (St2<>'') and (St2<>'0') then
    begin
      J:=J+StrToInt(St2);
      St:=St+St2+'.'; St3:=St3+St2;
      St2:=Trim(Copy(edtFormat.Text,5,1));
      if (St2<>'') and (St2<>'0') then
      begin
        J:=J+StrToInt(St2);
        St:=St+St2+'.'; St3:=St3+St2;
        St2:=Trim(Copy(edtFormat.Text,7,1));
        if (St2<>'') and (St2<>'0') then
        begin
          J:=J+StrToInt(St2);
          St:=St+St2+'.'; St3:=St3+St2;
          St2:=Trim(Copy(edtFormat.Text,9,1));
          if (St2<>'') and (St2<>'0') then
          begin
            J:=J+StrToInt(St2);
            St:=St+St2; St3:=St3+St2;
          end else
            St:=St+'0';
        end else
          St:=St+'0.0';
      end else
        St:=St+'0.0.0';
    end else
      St:=St+'0.0.0.0';
  end;
  edtFormat.Text:=St;
  if J<>StrToInt(edtLength.Text) then
  begin
    ShowMsg('UMS10000046');  //[读取格式]中长度不等于[读取长度]
    edtFormat.SetFocus;
    Abort;
  end;
  if edtID.Text='' then
  begin
    ShowMsg('UMS10000047');  //请指定卡号段位置
    edtID.SetFocus;
    Abort;
  end;
  if edtDate.Text='' then
  begin
    ShowMsg('UMS10000048');  //请指定日期段位置
    edtDate.SetFocus;
    Abort;
  end;
  if edtHour.Text='' then
  begin
    ShowMsg('UMS10000049');  //请指定小时段位置
    edtHour.SetFocus;
    Abort;
  end;
  if edtMinute.Text='' then
  begin
    ShowMsg('UMS10000050');  //请指定分钟段位置
    edtMinute.SetFocus;
    Abort;
  end;
  if OpenDialog1.Execute then
  begin
    bbtnOk.Enabled:=False;
    AssignFile(F1, OpenDialog1.Filename);
    Reset(F1); I:=0; St:=''; St2:='';
    while not Eof(F1) do
    begin
      Application.ProcessMessages;
      Read(F1, Ch);
      if (Ch<>Chr(10)) and (Ch<>Chr(13)) then
      begin
        I:=I+1;
        St:=St+Ch;
      end;
      if (I=StrToInt(edtLength.Text)) or (Eof(F1)) then
      begin
        //十六进制转换
        case cbType.ItemIndex of
          0:St:=St;                               //文本文件
          1:St:=VarToStr(StrToInt('$'+St));       //十六进制
          2:St:=VarToStr(StrToInt('$'+St));       //八进制
        end;
        N:=1;
        for K:=1 to Length(St3) do
        begin
          St2:=Copy(St,N,StrToInt(Copy(St3,K,1)));
          if K=StrToInt(edtID.Text) then AID:=St2;
          if K=StrToInt(edtDate.Text) then
          begin
            if Length(St2)=6 then St2:='20'+St2;
            try
              ADate:=EncodeDate(StrToInt(copy(St2,1,4)),StrToInt(copy(St2,5,2)),StrToInt(copy(St2,7,2)));
            except
              ShowMsg('UMS10000078');  //日期段数值错误
              edtDate.SetFocus;
              bbtnOk.Enabled:=True;
              qryCwa510.CancelUpdates;
              CloseFile(F1);
              Abort;
            end;
          end;
          if K=StrToInt(edtHour.Text) then ATime:=St2;
          if K=StrToInt(edtMinute.Text) then ATime:=trim(ATime)+':'+St2;
          if edtInOut.Text<>'' then
            if K=StrToInt(edtInOut.Text) then AInOut:=St2;
          N:=N+StrToInt(Copy(St3,K,1));
        end;
        qryCwa510.Insert;
        qryCwa510.FieldByName('C510_001').Value:=AID;
        qryCwa510.FieldByName('C510_002').Value:=ADate;
        qryCwa510.FieldByName('C510_003').Value:=ATime;
        qryCwa510.FieldByName('C510_004').Value:=AInOut;
        qryCwa510.FieldByName('C510_005').Value:=StrToInt(copy(ATime,1,2))*60+StrToInt(copy(ATime,4,2));
        try
          qryCwa510.Post;
        except
        end;
        ProgressBar1.Position:=ProgressBar1.Position+1;
        I:=0; St:=''; St2:='';
      end;
    end;
    CloseFile(F1);
    bbtnOk.Enabled:=True;
    ShowMsg('UMS10000079');  //考勤资料导入成功
    Close;
  end;
end;

procedure TCwa510_01Form.bbtnExitClick(Sender: TObject);
begin
  inherited;
//退出
  Close;
end;

procedure TCwa510_01Form.edtLengthKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if not (Key in ['0'..'9']) then
    if Key<>#8 then Key:=#0;
end;

initialization
  RegisterClass(TCwa510_01Form);

finalization
  UnRegisterClass(TCwa510_01Form);

end.

⌨️ 快捷键说明

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