比较最大日期速度求教!!!!

ahbc123 2003-03-08 04:46:08

比较最大日期速度求教!!!!
我写了一个查找文件(二进制)中最大日期(里面有许多相同的日期)的程序,可是执行起来很慢(35k需要1分钟),请教个位打侠帮助修改一下,以提高速度,谢谢!!!!
以下是代码:
Private Type Record
DM(1 To 4) As Byte
MNAME(1 To 4) As Byte
date As Long
a1 As Long
a2 As Long
End Type
Private aa() As Record
Private mm() As Record
Private Sub Command1_Click()
Dim recordReal As Record
Dim recordTemp As Record
Dim dateReal As Date
Dim dateTemp As Date
Dim RecordLen As Long
Dim MaxRecords As Long

Open App.Path & "\1.dat" For Binary Access Read Write As #1
RecordLen = LenB(recordReal)
MaxRecords = (LOF(1) - 21) / RecordLen
ReDim aa(MaxRecords)
ReDim mm(MaxRecords)
For i = 0 To MaxRecords - 2
For j = 0 To MaxRecords - 2 - i
Get #1, 1 + j * RecordLen, aa(i)
dateTemp = Format(aa(i).date, "####-##-##")
Get #1, 1 + (j + 1) * RecordLen, mm(j) 'a[i+1]

dateReal = Format(mm(j).date, "####-##-##")

If dateTemp >= dateReal Then
Me.D1.Value = dateTemp
End If
Next
Next
Close #1
End Sub
...全文
42 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wl8ily 2003-03-09
  • 打赏
  • 举报
回复
取出来后转变为数组,进行比较~~
smalle 2003-03-09
  • 打赏
  • 举报
回复
最好把所有的日期放入数据库,再用SQL最大的那个就可以了。你一定要用这个方法,我以前都做过类似的功能,我一开始是自己比较的,但运行了20小时没结果,我就用数据库,结果10分钟就出结果了。
northwolves 2003-03-08
  • 打赏
  • 举报
回复
不好意思,失误:
Get #1, 1 + j * RecordLen, aa(i)

j---->i
northwolves 2003-03-08
  • 打赏
  • 举报
回复
试试:
Private Sub Command1_Click()
Dim aa() As Record
Dim RecordLen As Long
Dim MaxRecords As Long
Dim MAXDATE As Date
Open App.Path & "\1.dat" For Binary Access Read Write As #1
RecordLen = LenB(recordReal)
MaxRecords = (LOF(1) - 21) / RecordLen
ReDim aa(MaxRecords)
Get #1, 1, aa(0)
MAXDATE = aa(i).Date
For i = 0 To MaxRecords - 1
Get #1, 1 + j * RecordLen, aa(i)
MAXDATE = IIf(MAXDATE >= aa(i).Date, MAXDATE, aa(i).Date)
Next
Close #1
End Sub

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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