为什么我从txt中读取数据保存到access中只生成一列,有劳大家看看

orchidbing 2005-06-24 05:04:31
为什么我把txt中的数据导入到access,所有的数据只保存在access的一列中
比如txt中数据为
站码 年份 日期 日降水量
80856500 1993 1-1 0
80856500 1993 1-2 0.3
80856500 1993 1-3 7
80856500 1993 1-4 0.8
80856500 1993 1-5 2
80856500 1993 1-6 0
80856500 1993 1-7 0
80856500 1993 1-8 0
80856500 1993 1-9 0
当我用 select * into uform from [Text;Database=f:\].form.txt语句写入access的时候
不是站码、年份、日期、日降水量作为字段名
而是站码 年份 日期 日降水量作为一个字段名来保存数据的,
请问怎么做到按站码、年份日期、日降水量分别为字段保存
...全文
166 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
1285189390 2005-06-26
  • 打赏
  • 举报
回复
一种办法:一行行读,然后写入数据库。
2、你可以用dts包来实现,具体的可参考Sql Server帮助文件。
先用Sql server数据导入向导,源文件是你的TXT,目标是你的ACCESS数据库,然后保存成vb文件或者DTS包,这样你在程序里面就可以调了,我用过,导50万条记录,也就10分钟左右,和SQL SERVER导入数据的效率一样。
orchidbing 2005-06-25
  • 打赏
  • 举报
回复
有劳大家
orchidbing 2005-06-24
  • 打赏
  • 举报
回复
orchidbing 2005-06-24
  • 打赏
  • 举报
回复
看不出什么啊工人,能具体点吗,最好给出过程
darkliu 2005-06-24
  • 打赏
  • 举报
回复
给个例子:
用delphi将纯文本文件转换成数据库文件
  在开发数据库应用程序时,有时需要将纯文件格式的文件转换为数据库类型的文件。下面,结合笔者所开发的具体应用实例,来说明这一转换方法。

  笔者所开发的是“人事考勤管理系统”,在这一系统中,需要将考勤刷卡机所生成的员工考勤数据(纯文本格式)转换到paradox5.0格式的数据库中,以便于应用程序对数据库进行统计查询等操作。

  1、下面是考勤刷卡机生成的员工考勤数据文件(文件名为kq.txt)的格式:

  01000315 9801051428a0

  01000820 9801051429a1

  01000659 9801051429b2

  01000883 9801051429b3

  01000173 9801051429a4

  ………

  说明:

  ●每一行为某一员工某一次的刷卡记录数据

  ●行宽固定为27个字符

  ●1~2字符为刷卡机代码:01代表1号刷卡机,02代表2号刷卡机,依此类推

  ●3~15字符为员工考勤工号,共有13位,本系统只用了6位,000315为员工工号

  ●16~25字符为刷卡时间,9801051428意即98年1月5日14点28分

  ●26字符为刷卡状态,a为上班,b为下班

  ●27字符为流水号,0~9为一循环

  2、paradox数据库类型文件kq.db数据库结构如下:

  共有4个字段

  ●工号:字符类型,宽度为6

  ●日期:字符类型,宽度为8

  ●时间:字符类型,宽度为5

  ●进/出:字符类型,宽度为2

  此文件可由数据库桌面database desktop创建,并保存到c:ιkq子目录中。

  3、从kq.txt到kq.db的转换方法如下:

  (1)建立窗体(如下图所示),设置窗体各控件的属性。

  

  此窗体共有两个按钮(button1和button2),一个数据表(table1),一个数据源(datasource1)和一个数据网格(dbgrid1),它们的属性分别如下:

  ●button1.caption:=转换

  ●button2.caption:=退出

  ●table1.databasename:=c:\kq

  table1.tablename:=kq.db

  ●datasource1.dataset:=table1

  ●dbgrid1.datasource:=datasource1

  (2)转换处理程序如下:

  procedure tform1.button1click(sender:tobject);

  var

  str:string;

  txtfile:textfile;{定义一个文本文件变量txtfile}

  ch:char;

  begin

  table1.open;{打开kq.db数据库}

  assignfile(txtfile,′c:\kq\kq.txt′);{将kq.txt分配给txtfile变量}

  reset(txtfile);{打开kq.txt文本文件}

  str:=′′;

  while not eof(txtfile)do{只要kq.txt文件没有结束,就循环转换}

  begin

  read(txtfile,ch);{从kq.txt中读一个字符}

  if ch<>char(13)then{是否为回车符}

  str:=str+ch{不是回车,继续读下一个字符}

  else

  begin{是回车符,表明已经读完一行,此时str变量即代表一行信息}

  table1.append;{将kq.db数据库追加一空记录}

  table1.edit;{将kq.db数据库设为可编辑}

  table1.fieldbyname(′工号′).asstring:=copy(str,3,6);

  {从str的第3字符开始,截6个字符,作为工号}

  table1.fieldbyname(′日期′).asstring

  :=copy(str,16,2)+′/′+copy(str,18,2)+′/′+copy(str,20,2);

  {从str的第16字符开始,截6个字符,作为日期}

  table1.fieldbyname(′时间′).asstring:=copy(str,22,2)+′:′+copy(str,24,2);

  {从str的第22字符开始,截4个字符,作为时间}

  str:=copy(str,26,1);

  {从str的第26字符开始,截1个字符,作为出勤状态}

  ifstr=′a′thentable1.fieldbyname(′进/出′).asstring:=′进′

  elsetable1.fieldbyname(′进/出′).asstring:=′出′;

  table1.post;{将数据过至kq.db数据库中}

  read(txtfile,ch);{略过换行符}

  str:=′′;{清str变量}

  end;

  end;

  end;

  proceduretform1.button2click(sender:tobject);

  begin

  close;

  end;

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧