工厂的考勤机是依时利ER-880D,当初没有带系统,只一个接口软件读出来的数据是.txt文件,如下:
0000924088 2006-05-19 17:44:09 6 0
0000924029 2006-05-19 17:44:51 6 0
0000926837 2006-05-19 17:44:55 6 0
0003477721 2006-05-19 18:02:20 6 0
0000929319 2006-05-19 18:30:05 6 0
...,现在我想用delphi自已开发一个考勤系统出来,但不知道怎么样把.txt文本文件转换成access数据库文件??请指点.
0000924088 2006-05-19 17:44:09 6 0
0000924029 2006-05-19 17:44:51 6 0
0000926837 2006-05-19 17:44:55 6 0
0003477721 2006-05-19 18:02:20 6 0
0000929319 2006-05-19 18:30:05 6 0
...,现在我想用delphi自已开发一个考勤系统出来,但不知道怎么样把.txt文本文件转换成access数据库文件??请指点.
解决方案 »
- 200分 帮看下这个网站是不是不让模拟提交验证码? idhttp post
- Grid指定列行数
- 界面实现,请进:
- 如何实现treeview中数据的快速查询
- 一个关于数据库操作的问题?
- 老板让我计算员工外出时间累计,谁有好办法?
- 哈哈,可以发问了? access数据库的查询问题 急呀!!!
- 如何用delphi激活frontpage编辑好网页后,保存到delphi的环境中
- 在线等,各位大侠,在MDI窗口中,子窗口在最大化时,怎样去掉子窗口标题栏的图标?
- 有没有办法设一个日期类型的变量的值为空或为零?
- 按揭50分给饭桶,买断"又"字
- dbchart里的series1和series2可以对应不同的表格吗?在运行时显示两条不同的曲线?
[email protected]
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;type
TForm3 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
ADOQuery1: TADOQuery;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;
coon: string;
implementation
uses jdfrm, dmfrm;{$R *.dfm}procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
end;procedure TForm3.FormDestroy(Sender: TObject);
begin
Form3 := nil;
end;procedure DetachString(var SaveSt: TStringList; const DetachSt, DetachCh: string);
var
DetachLen: Integer;
St, S, Str: string;
i: Integer;
begin
St := DetachSt;
S := DetachCh;
DetachLen := Length(DetachCh);
if SaveSt = nil then
Exit; while True do
begin
i := Pos(S, St);
if i <= 0 then
begin
if St <> '' then
SaveSt.Add(St);
break;
end;
Str := Copy(St, 0, i - 1);
St := Copy(St, i + DetachLen, Length(DetachSt) - i);
SaveSt.Add(Str);
end;
end;
procedure TForm3.Button1Click(Sender: TObject);
var
filename: string;
slist, str: tstringlist;
i: integer;
s, rcklb, strsql: string;
cxquery: Tadoquery;begin
rcklb := '';
slist := Tstringlist.Create; //存放文件所有内容--声明
if opendialog1.Execute then
begin
filename := opendialog1.FileName;
slist.LoadFromFile(filename); //实现
for i := 0 to slist.Count - 1 do //循环实现对每行操作
begin str := Tstringlist.Create;
s := slist[i];
Detachstring(str, s, ','); //调用自定义函数 分割字符串(针对每行重复操作)
if str.Count = 3 then //屏蔽非标准数据
begin
if not assigned(jdform) then //标识导入进程
begin
jdform := Tjdform.Create(application);
jdform.Show;
end;
jdform.ProgressBar1.Max := slist.Count-2;
//查询数据库 得出入库出库标识
cxquery := Tadoquery.Create(self);
cxquery.Connection := dmform.Adoconnection1;
with cxquery do
begin
close;
sql.Text := 'select * from ry where bh=''' + str[0] + '''';
open;
if not eof then //检查当前数据是条码还是入出库标识
begin
rcklb := fieldbyname('rm').AsString;
continue; //如果是标识 此条数据不保存 保存接下来的数据
end;
if rcklb <> '' then //主要目的为屏蔽第一条标识数据
begin
close;
strsql := 'insert into tm(tm,ckr,smrq,smsj,sj) values(''' + str[0] + ''',';
strsql := strsql + '''' + rcklb + ''',''' + str[1] + ''',''' + str[2] + ''',';
strsql := strsql + '#' + FormatDateTime(' yyyy - MM - dd ', date) + '#)';
sql.Text := strsql;
ExecSQL;
dbgrid1.Columns[0].Width:=50;
end;
end;
end
else
begin
showmessage('检测到不符合格式数据,读取中止!');
str.Free;
slist.Free;
if jdform <> nil then
jdform.Close;
exit;
end;
str.Free;
jdform.ProgressBar1.Position := i;
end;
slist.Free;
showmessage(' 输入成功 !'); end;
if jdform <> nil then
jdform.Close;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from tm order by sj desc,smrq desc,smsj desc');
adoquery1.Open;
edit1.Text := inttostr(adoquery1.RecordCount);
end;end.
SQLStr:='insert into tb select * From [Text;Database=c:\temp\;Format=Delimited()].'a.txt;
adoCoon.Execute(SQLStr);建议去delphibbs参考碧血剑的文章,关于异构数据库之间的数据转换
用上面的办法,效率十分的高,而且语句简单明了,不过你需要去了解什么是Schema.ini,建议多用google
再说对错误的控制也比较好处理
小菜我,只想学习学习。
jascha_x:
建议去delphibbs参考碧血剑的文章,关于异构数据库之间的数据转换你看了之后,很多疑问都会很清楚,txt,excel,access,sql server相互之间可以互相转换