标题:[求助]如何把这个TXT导入ACCESS
只看楼主
山嘉阿黛儿
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-5-23
 问题点数:0 回复次数:7 
[求助]如何把这个TXT导入ACCESS
文本文件如下:
000001,6226458763125487,女,wang,li,ya ,0909,987123479017837489203748397889283892,MD5A
000002,6226458763125487,女,peng,li ,0909,987123479017837489203748397889283892,YL1A
000003,6226458763125487,男,wang,dong ,0909,987123479017837489203748397889283892,MD5A
000004,6226458763125487,男,chen,jie,bin ,0909,987123479017837489203748397889283892,MD5P
000005,6226458763125487,女,du,li ,0809,987123479017837489203748397889283892,YL1P
000006,6226458763125487,男,sun,xiao,peng ,0809,987123479017837489203748397889283892,MD5A
000007,6226458763125487,男,hao,yan ,0909,987123479017837489203748397889283892,MD3A
000008,6226458763125487,女,wang,jia,luo ,0909,987123479017837489203748397889283892,YL5A
000009,6226458763125487,男,sun,qi,ming ,0709,987123479017837489203748397889283892,MD3B
000010,6226458763125487,女,chen,dong,fen ,1009,987123479017837489203748397889283892,MD9B
.
.
.
大概有一万条。
我在ACCESS中已经建了一个表a,只有字段名没有内容,一共有七个字段,如何把文本文件按字段写入ACCESS表a中?1-6位是字段1,8-23位 是字段2,25-28位是字段3,60-63位是字段4,65-101位是字段5,103-104位是字段6,107-108位是字段7,用MID函数。
搜索更多相关主题的帖子: TXT ACCESS 文本文件 wang 
2007-05-29 20:34
山嘉阿黛儿
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-5-23
得分:0 
回复:(山嘉阿黛儿)[求助]如何把这个TXT导入ACCESS
谁能帮帮我啊

2007-05-29 20:55
不惑
Rank: 2
等 级:论坛游民
威 望:2
帖 子:569
专家分:13
注 册:2007-3-22
得分:0 
第一步,把姓名中的逗号替换了,方法是读取一行,用mid取姓名位置的字段个数.并且把替换后的内容写入一个新的文件
第二步,使用随机文件方式打开新的文件读取字段内容.
第三步,将读取的字段内容以一个循环写入数据库
2007-05-29 21:33
山嘉阿黛儿
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-5-23
得分:0 
谢谢您终于有人理我一下了,我是个新手,您能告诉我一下具体的代码吗?还有就是姓名里的逗号不用替换,我只要MID函数把它取出来放进ACCESS就可以了,因为它每一行的长度都是一致的,姓名所占的位数都是25-58位,就是有空格我也要,因为不能改变它的格式。
2007-05-29 21:46
山嘉阿黛儿
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-5-23
得分:0 
回复:(山嘉阿黛儿)[求助]如何把这个TXT导入ACCESS
我这么做它老报错说下标越界,为什么呢
Private Sub Command2_Click()
Dim conn As New ADODB.Connection
Dim mrc() As String
conn.ConnectionString = "provider=Microsoft.jet.oledb.4.0;&_datasource=" & App.Path & "datebase\db1.mdb;persist security info=false"
Dim temp As String
Dim s1 As String '存储MD记录
Dim s2 As String '存储YL记录
Open CommonDialog1.FileName For Input As #1
Do While Not EOF(1)
Line Input #1, temp
mrc(0) = Mid(temp, 1, 6)
mrc(1) = Mid(temp, 8, 16)
mrc(2) = Mid(temp, 25, 34)
mrc(3) = Mid(temp, 60, 4)
mrc(4) = Mid(temp, 65, 37)
mrc(5) = Mid(temp, 103, 2)
mrc(6) = Mid(temp, 105, 2)
Loop
MsgBox "完"
End Sub
2007-05-29 22:32
不惑
Rank: 2
等 级:论坛游民
威 望:2
帖 子:569
专家分:13
注 册:2007-3-22
得分:0 
那你就全部用MID读入就是了
2007-05-29 22:33
山嘉阿黛儿
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-5-23
得分:0 
那您帮我看一下上面我的程序哪出了问题总是报错说下标越界
2007-05-29 22:38
不惑
Rank: 2
等 级:论坛游民
威 望:2
帖 子:569
专家分:13
注 册:2007-3-22
得分:0 
这个do......loop语句其实条件很关键的.放在前面和放在后面是不一样的(差最后一条的运算)
Do While Not EOF(1) '你可以把条件入到下面去试试
Line Input #1, temp
if trim(temp)<>"" then '防止有空行,有空行,下面的语句肯定出错
mrc(0) = Mid(temp, 1, 6)
mrc(1) = Mid(temp, 8, 16)
mrc(2) = Mid(temp, 25, 34)
mrc(3) = Mid(temp, 60, 4)
mrc(4) = Mid(temp, 65, 37)
mrc(5) = Mid(temp, 103, 2)
mrc(6) = Mid(temp, 105, 2)
end if
Loop '就是放到这儿来

Do
Line Input #1, temp
if eof(1) then exit do '我习惯这样
if len(temp)>=107 then '这个也是防止不规范的数据
mrc(0) = Mid(temp, 1, 6)
mrc(1) = Mid(temp, 8, 16)
mrc(2) = Mid(temp, 25, 34)
mrc(3) = Mid(temp, 60, 4)
mrc(4) = Mid(temp, 65, 37)
mrc(5) = Mid(temp, 103, 2)
mrc(6) = Mid(temp, 105, 2)
end if
Loop

2007-05-30 08:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-143353-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.180365 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved