按行读取文本?

kelvin357 2008-01-22 11:42:11
ABC Company
name unitprice gross account
apple 3.50 2000 500.00
pear 6.5 1000 6000.00

上面的数据, 我想把读到的第一行,第二行不要, 只要纯数据,
再写入oracle数据库对应的column ,每个字段间隔是一个vbTab , 要如何做啊, 谢谢~``
...全文
124 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复

Dim strLine As String
Dim strValue() As String
Dim LineCount As Integer '行数
LineCount = 0
Open "D:\My Projects\Temp\test.txt" For Input As #1
Do While Not EOF(1)
LineCount = LineCount + 1
Line Input #1, strLine
If LineCount > 2 Then
strValue = Split(strLine, vbTab, , vbTextCompare)
'||……
'||向数据库中增加一条记录,相应字段的值分别为
'||strValue(0)、strValue(1)、strValue(2)、strValue(3)
'||……
End If
Loop
Close #1
回复
viena 2008-01-22
好像有个line input
多年不用VB,不记得了
回复
m5home 2008-01-22
.................
回复
kelvin357 2008-01-22
OH, 第一个问题我搞懂了, 如果直接按打开按钮, 我就用

if dlgOpen.filename<>"" then
Open dlgOpen.filename For Input As #1
......
end if

剩下的问题, 我继续学习中。。。
回复
kelvin357 2008-01-22
我现在有个新的问题, 就是文件名不能定死了, 要用CommonDialog 来打开.
怎么判断我按一下打开这个按钮就和3楼的 Open "c:\1.txt" For Input As #1 '打开文件
相关联?谢谢。
还有如果我不用3楼的办法,用控件来装, 直接用一些临时变量保存,分割了数据 了就insert 到 oracle DB中, 可以吗?
回复
ZOU_SEAFARER 2008-01-22
没有必要引入FSO
杀鸡淹用宰牛刀
DIM A AS STRING
回复
z_wenqian 2008-01-22
楼上的a是string型,就是将一行文本读入a,然后再做其他处理。

我觉得还是用FileSystemObject比较好,可以把代码存成vbs脚本,直接运行就可以了。
回复
kelvin357 2008-01-22
cike_1111 ,谢谢你的详细解答, 想问一下变量a 是什么类型啊?为什么没有见到定义?
回复
kelvin357 2008-01-22
谢谢指导, 我慢慢再消化~````
回复
ZOU_SEAFARER 2008-01-22
楼上是牛人,HOHO
回复
cike_1111 2008-01-22
所需知识:

1. 读取文本文件open 语句
2. line input # 函数 可逐行读取 但要 DO 循环语句配合
3. split 分割函数 把数据分割分别存储

下面是个例题 可以根据你自己的需要修改!
=======cike例题=======
name = 数据分割 存储
form = text一组[index=0-4 5个] command1 个
---------------------------------------
设置: text
.MultiLine = True [多行显示]
---------------------------------------
额外:在c盘根目录下建立一个1.txt内容为:

ABC Company
name unitprice gross account
apple 3.50 2000 500.00
pear1 6.1 1000 6000
pear2 6.2 2000 6000
pear3 6.3 3000 6000
pear4 6.4 4000 6000
pear5 6.5 5000 6000
pear6 6.6 6000 6000
pear7 6.7 7000 6000
pear8 6.8 8000 6000
pear9 6.9 9000 6000

步骤:放入控件后 设置text1属性 C:\1.TXT建立后 放入代码 运行....
======================

Private Sub Command1_Click()
Dim b As Variant '变体变量b 用与变为数组
Dim c As Variant '变体变量c 用与变为数组
Open "c:\1.txt" For Input As #1 '打开文件
Do While EOF(1) = False '若没循环到文件尾则继续
Line Input #1, a '读取一行 用变量 a 存储
For i = 1 To Len(a) '这个循环作用是把中间多个空格变为1个空格
a = Replace(a, " ", " ") ' 替换函数替换的方法替换2个空格为1个 循环到最后只有1个空格再字串中间
Next i
s = s & a & vbCrLf '把变换后的数据存在一个变量s 中
Loop

Close #1 ' 关闭文件
b = Split(s, vbCrLf) ' 分割S 成每行 用数组b 存储
For i = 2 To UBound(b) ' 从第3行开始执行循环
If Len(b(i)) > 5 Then ' 这个判断是为了避免空行也进行操作
c = Split(b(i), " ") ' 分割每行 分割符为 空格
For j = 0 To UBound(c) ' 把数组C 的每个项目分别赋给text 组
Text1(j) = Text1(j) & c(j) & vbCrLf ' 各组=个组+数据+换行
Next j
End If
Next i
End Sub

这样的操作 应多注意下标越界
运行后点 command1 可看到已经把数据划分好了!
LZ 可以参考如何分割那部分 分割好数据后可以把数据放到数据库中... 因数据库不会操作 所以只能这样了!

回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告