同上! 谢谢诸位!分少,见谅啊!
解决方案 »
- 请教各位高手!!如何在mshflexgrid中实现当cell中文字比colwidth大无法完全显示时,将鼠标放置其上面时利用tooltip显示其内容
- 求救.关于image控件的问题.简单.急
- 数据库查询功能虽然可以实现,但是以进入界面,text控建一开始就显示了数据库里面的东西,怎么解决?
- VB6还有没有更好的选项卡控件?
- 急!!!adodb连接access加密数据库失败...
- 一个无聊的小问题
- vb 調 delphi dll error. pls help me
- 好消息啊,Anole控件免费送了
- 怎样实时监控程序或者进程的运行
- 请问哪儿有老的dbgrid下载
- 如何将一个含有特殊符号的文本按要求大小分割成几个文本?
- 求助:access中VBA for循环如何储存每次循环后的值,最后一起引用
Public Sub Index(senten As String) Dim i, j, k, L1, L2 As Single
Dim a As AStruct '定义表结构的数据类型
Dim d As BStruct '定义数据的存储类型
Dim c(1 To 20000) As CStruct '临时存储稠密索引表
Dim b As CStruct '临时变量
Dim keyfile As String '记录主键的文件名
Dim table As String '记录当前表的名字
'提取表的名字
k = 14 '提取表名
i = k
ch = Mid(senten, i, 1)
Do While ch <> ";"
i = i + 1
ch = Mid(senten, i, 1)
Loop
table = Mid(senten, k, i - k) '提取表名
L1 = FileLen(App.Path + "\db\" & database & "\" & table) \ Len(a) '获取主键的文件名
For j = 1 To L1
Open App.Path + "\db\" & database & "\" & table For Random As #1 Len = Len(a) '获得一个属性 Get #1, j, a '获得一个属性
Close #1
If Trim(a.IsKey) = "true" Then
keyfile = Trim(a.StoreName)
Exit For
End If
Next j '获取主键的文件名
'建立新的主键表 L1 = FileLen(App.Path + "\db\" & database & "\" & "stuid") \ Len(d) '计算整个文件的大小
L2 = 5000
Open App.Path + "\db\" & database & "\" & "stuid" For Random As #1 Len = Len(d)
For i = 0 To 2 '将整个文件分块,分别对各个块进行排序;
For j = 1 To L2 '取出数据
If i * 5000 + j = L1 Then '考虑特殊情况,最后一个块不是完整的块,记录位置
L2 = j
Exit For
End If
Get #1, i * L2 + j, d
c(j).Key = d.Context
c(j).Id = i * L2 + j
Next j
Call HEAPSORT(c, L2) '调用对排序算法,进行排序
Open App.Path & "\db\ " & database & "\" & Str(i) For Random As #2 Len = Len(b) '新建文件,将已排序数据写入文件
For j = 1 To L2
Put #2, j, c(j)
Next j
Close #2
Next i '完成一次分块,排序
Close #1 '分块结束
'进行三路归并
Open App.Path & "\db\ " & database & "\" & Str(0) For Random As #1 Len = Len(b) '新建文件,将已排序数据写入文件
Open App.Path & "\db\ " & database & "\" & Str(1) For Random As #2 Len = Len(b) '新建文件,将已排序数据写入文件
Open App.Path & "\db\ " & database & "\" & Str(2) For Random As #3 Len = Len(b) '新建文件,将已排序数据写入文件
Open App.Path & "\db\ " & database & "\stuidID" For Random As #4 Len = Len(b) '新建文件,将已排序数据写入文件
Get #1, , c(1)
Get #2, , c(2)
Get #3, , c(3)
Do While Not EOF(1) Or Not EOF(2) Or Not EOF(3)
i = TMin(Val(c(1).Key), Val(c(2).Key), Val(c(3).Key))
Select Case i
Case 1
Put #4, , c(1)
If Not EOF(1) Then
Get #1, , c(1)
Else
c(1).Key = Str(100000000)
End If
Case 2
Put #4, , c(2)
If Not EOF(2) Then
Get #2, , c(2)
Else
c(2).Key = Str(100000000)
End If
Case 3
Put #4, , c(3)
If Not EOF(3) Then
Get #3, , c(3)
Else
c(3).Key = Str(100000000)
End If
Case Else
MsgBox ("建立索引出错!")
End Select
Loop
Close #1
Close #2
Close #3
Close #4 '进行三路归并
'建立稀疏索引文件;
L1 = FileLen(App.Path & "\db\ " & database & "\stuidID ") \ Len(b) '计算稠密索引文件的大小
Open App.Path & "\db\ " & database & "\stuidID" For Random As #1 Len = Len(b) '打开稠密索引文件
Open App.Path & "\db\ " & database & "\stuidSID" For Random As #2 Len = Len(b) '新建稀疏索引文件
For i = 1 To L1 \ 100
Get #1, (i - 1) * 100 + 1, b
Put #2, i, b
Next i
Close #1
Close #2
End Sub
dir的详细说明看看msdn
Open App.Path & "\db\ " & database & "\" & Str(i) For Random As #2 Len = Len(b)
的Str(i),改为cStr(i),因为有空格