請叫一個考勤問題(50分)

  • 主题发起人 主题发起人 kingson
  • 开始时间 开始时间
K

kingson

Unregistered / Unconfirmed
GUEST, unregistred user!
我的考勤數據是這樣的
0035599528 200212150725A
前面十位是卡號,20021215是日期,0725表時間,A是打卡標識,表示上午上班打卡
我想問怎麼處理這樣的數據,把它生成的文本文件讀入數據庫?
 
下面是讀文本文件的例子!
var
F: TextFile;
S: string;
begin
if OpenDialog1.Execute then { Display Open dialog box }
begin
AssignFile(F, OpenDialog1.FileName); { File selected in dialog }
Reset(F);
Readln(F, S); { Read first line of file }
Edit1.Text := S; { Put string in a TEdit control }
CloseFile(F);
end;
end;
 
procedure Tfrm_zhsksj.BitBtn2Click(Sender: TObject);
var
i:integer;
s1:tstringlist;
begin
s1:=tstringlist.Create ;
try
s1.LoadFromFile(edit1.text);
progressbar1.Max:=s1.Count;
progressbar1.Position:=0;
for i:=0 to s1.Count-1 do
begin
with dmconnectiondb.adoqskjl1 do
begin
close;
sql.Clear;
sql.Add('insert into k_skjl1');
sql.Add('values');
sql.Add('(:kh,:kzbh,:skdate,:sktime,:remark)');
parameters.ParamByName('kh').Value:=copy(s1,4,4);
parameters.ParamByName('kzbh').Value:=copy(s1,14,1);
parameters.ParamByName('skdate').Value:=copy(s1,14,4)+'-'+copy(s1,18,2)+'-'+copy(s1,20,2);
parameters.ParamByName('sktime').Value:=copy(s1,22,2)+':'+copy(s1,24,2);
parameters.ParamByName('remark').Value:=copy(s1,26,2);
execsql;
progressbar1.Position:=progressbar1.Position+1;
end;
end;
messagebox(handle,'卡鐘數据已經成功轉換為TABLE表','計算机提醒您﹗',mb_iconinformation+mb_ok);
except
begin
messagebox(handle,'請指定卡鐘數据文件的位置﹗','計算机提醒您﹗',mb_iconinformation+mb_ok);
end;
end;
end;

格式﹕
0002579 200301091700F0
0007087 200301091703F0
0007042 200301091703F0
0000097 200301091703F0
0004862 200301091703F0
0004624 200301091703F0
0005271 200301091703F0
0004899 200301091703F0
0005615 200301091703F0
0005068 200301091703F0
0006015 200301091703F0
0006015 200301091703F0
0000352 200301091703F0
0001850 200301091703F0
0001850 200301091703F0
0006849 200301091703F0
0005912 200301091703F0
0005912 200301091703F0
0006794 200301091703F0
 
請問bernhn:我的考勤數據是這樣的:010035599528 200302251730D0
我應該怎麼樣導入導表中,自動導入
 
告诉你一个比较快的速度,如果你采用一笔一笔读入,假设工厂有1万人,一天刷六月笔卡,
你的读取速度会很快.建议你用存储过程处理.我之前是这样处理的.每次读取几十笔一起丢
给存储过程处理.速度要快很多.我有一套考勤系统,可以交流交流.
 
010035599528這個是卡號嗎?
如果是改下copy就可以了﹐如copy(asdf,1,3)為asd!
 
我的數據是這樣的,010035599528 200306120752A0
01表示卡機號,0035599528 表示卡號,20030612表示日期,0752表示日期,A0表示刷卡標識
請問markiszml,怎麼用存儲過程處理考勤過程,尤其是遲到,早退,曠工,公差,公休,待料等
 
你對應一下我的數据改一下copy中對應的取字符的位置就行了﹐
其中edit1.text是對應你的原始卡鐘數据所存放的文件﹐年輕人別太懶﹗
 
我想问一下,你是使用文件数据库还是…………

如果你不是使用文件数据库
那我相信,这段代码应该对你有用

我把excel表导入数据库
暂时在 sql ,access ,paradox 上调试通过
如果你需要,我明天告诉你网址,现在我要下了

886
在 csdn上
 
TO wcy12td:
我用的是sql2000數據庫,你能告許你把excel文件導入到數據庫的方法嗎
 
后退
顶部