本帖最后由 w60711 于 2019-10-4 14:40 编辑
data.db:
表:T_Category
栏位:F_id, F_ClassiFication, F_SubClass, F_Sort, F_Server, F_IconImage, F_PicImage, F_Spares
数据:(大约有1万笔以上,数据库约500MB)1, 主分类1, 子分类1, 项目名称, 伺服器位置, 2进制图片, 2进制图片, 1+2+3
2, 主分类1, 子分类2, 项目名称, 伺服器位置, 2进制图片, 2进制图片, 1+2+3
3, 主分类2, 子分类1, 项目名称, 伺服器位置, 2进制图片, 2进制图片, 1+2+3
4, 蔬菜, ˋ植根类, 辣根, Server1, 2进制图片, 2进制图片, 1+2+3
.
.
.
开启程序时,会依据分类(前3项)加到树状列表中,如下图:
其中,小明 小华 等等是写死的(根),会根据 1 2 3 去判断要写到哪个根目录
现在问题来了,光是读取到写入列表
就花了快1.2分钟...
请求大神帮忙改为效率方法,感谢~
以下为原代码Func _CreateListTree($Server) ;;建立树状列表分类
Local $hQuery, $hQuery2, $aArray, $bArray
If $Server = '小明' Then
$server = 'T_MIN'
$root = $tMIN ;;创建根 时候的名称
EndIf
If $Server = '小华' Then
$server = 'T_HWU'
$root = $tMIN
EndIf
If $Server = '小李' Then
$server = 'T_LEE'
$root = $tMIN
EndIf
_SQLite_Exec($sDB, "BEGIN;") ;;显性事务
Local $row, $col
_SQLite_GetTable2D(-1, "SELECT F_ClassiFication FROM T_Category;", $hQuery, $row, $col)
$aArray = _ArrayUnique($hQuery)
Local $Class[$aArray[0]-2]
For $k = 0 To $aArray[0] -3
$Class[$k] = GUICtrlCreateTreeViewItem($aArray[$k+2],$root)
_SQLite_GetTable2D(-1, "SELECT F_SubClass FROM T_Category Where F_ClassiFication='" & $aArray[$k+2] & "';", $hQuery2, $row, $col)
$bArray = _ArrayUnique($hQuery2)
Local $Sub[$bArray[0]-2]
For $m = 0 To $bArray[0] -3
$Sub[$m] = GUICtrlCreateTreeViewItem($bArray[$m+2],$Class[$k])
Next
Next
_SQLite_Exec($sDB, "COMMIT;") ;;关闭显性事务
EndFunc
PS.
我有看到Afan大的 逐级载入,
但是弄了半天还是无法改成从DB提取的方式...
|