📄 cwa510_01.pas.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 + -