爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3819|回复: 3

VB6.0读取以时间为名的数据文件,求指点

[复制链接]

新浪微博达人勋

发表于 2016-3-30 21:45:23 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
想用VB6读取以时间为名的数据文件,文件在类似这样的路径下Z:\YYYYMM\YYYYMMDD20\YYMMDD20.txt,每天20时系统都会自动生成1个.txt文件。
我要读取.txt文件中的某行某列,要求当一个命令下达时,调用的是最新的数据文件。
比如,我是2016年3月30日白天运行程序,则调用的应该是前一天晚上20时生成的数据,路径是Z:\201603\2016032920\16032920.txt中的数据。测试的数据见图片。
从网上东拼西凑来的代码,编译有错:实时错误‘9’  下标越界。
求指点,谢谢~~
Private Sub cmd1_Click()
Dim lngFn As Long, strT As String
Dim filename As String
filename = Replace(Format(Date - 1, "yyyymm-yyyymmdd20-yymmdd20"), "-", "\") & ".txt"
    lngFn = FreeFile
    Open f & "\ " & "filename" For Binary As lngFn
   strT = Space(LOF(lngFn))
    Get 1#, , strT
    Close #lngFn
Dim sArr() As String
    sArr = Split(strT, vbCrLf)
    txt1.Text = Split(sArr(0), " ")(0)
End Sub



vb初学者,求大虾们指教,小女子先行谢过~~~
QQ截图20160330211751.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-4-7 16:44:48 | 显示全部楼层
Private Sub Command1_Click()
Dim sA As String

'判断时间
If Hour(Now) >= 20 Then
    tt = Now
Else
    tt = DateAdd("d", -1, Now)
End If

'确定路径
lj = "Z:/" & Format(tt, "YYYYMM") & "/" & Format(tt, "YYYYMMDD") & "20/" & Format(tt, "YYMMDD") & "20.txt"

'确认文件是否存在
If Dir(lj) <> "" Then
    '读取文件到变量sA
    Open lj For Binary As #1
    sA = Space(LOF(1))
    Get #1, , sA
    Close #1
Else
    MsgBox "文件不存在"
    Exit Sub
End If

'关于文件操作
'我下面用的是分割读取
'现在一般气象资料编辑的时候都是固定位数的,分割不一定好使,看你的文件具体情况建议改成mid
'mid具体用法mid(string,开始字符位置,长度)
'例如字符串 str="1 2 3"
'mid(str,1,1)就是"1"
'mid(str,3,1)就是"2"
ha = Split(sA, vbCrLf) '行切割,如果出问题可能是因为文件是Linux下的,vbCrLf 改成 chr(10)
For i = 0 To UBound(ha)
    Debug.Print ha(i)
    nr = Split(ha(i), " ")
    For j = 0 To UBound(nr)
    Debug.Print nr(j)
    Next
Next
End Sub
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-4-20 20:42:45 | 显示全部楼层
1099221723 发表于 2016-4-7 16:44
Private Sub Command1_Click()
Dim sA As String

程序已经调试成功,谢谢。但是实际上我是想一个cmddy命令调取两个路径下的文件。分别调取的时候调试都没有问题,但合在一起了就报错(op2.Text未找到方法或数据成员),请帮忙检查下。谢谢!!!!
Private Sub cmddy_Click()
Dim llngFn As Long, sstrT As String
Dim ffilename As String
Dim ssArr() As String
sstrT = Format$(Date - 1, "yyyymmdd")
ffilename$ = "e:\" & "OCF." & Right$(sstrT, 6) & "12.58570.dat"
llngFn = FreeFile
Open ffilename For Binary As llngFn
sstrT = Space(LOF(llngFn))
Get 1#, , sstrT
Close #llngFn
If Trim(sstrT) > "" Then
    ssArr = Split(sstrT, vbCrLf)
    op1.Text = Split(ssArr(11), " ")(19)
End If
'MsgBox strT
'调用另一个路径下的文件
Dim lngFn As Long, strT As String
Dim filename As String
Dim sArr() As String
strT = Format$(Date - 1, "yyyymmdd")
filename$ = "e:\" & "Z_SURF_I_58570_" & strT & "120000_O_AWS_FTM.txt"
lngFn = FreeFile
Open filename For Binary As lngFn
strT = Space(LOF(lngFn))
Get 1#, , strT
Close #lngFn
If Trim(strT) > "" Then
    sArr = Split(strT, vbCrLf)
   op2.Text = Split(sArr(2), " ")(1)
End If
End sub
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-4-21 10:30:33 | 显示全部楼层
Dim lngFn As Long, strT As String
Dim filename As String
Dim sArr() As String
重复定义,把下面的这三行删掉
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表