我想实现根据菜单需要动态卸载无关表, 所以编写了这个函数
'CloseUnrelatedTable_And_OpenRelatedTable 关闭无关的表,打开与本项工作有关的表,
'基本表Start,Data,ResourceID,EMlist保持常开,其它表按需要加载
'后面用其删除无关表单,同时打开相关表单,引用方式:
'Functions.Execute("CloseUnrelatedTable_And_OpenRelatedTable","主文件名")
'MessageBox.Show(1)
Dim dtn As String = Args(0)
'4个基本表不允许关闭
Dim FilesU As String = "Start|Data|ResourceID|EMList|"
Dim Fs2 As String
Dim dr As DataRow = DataTables("Data").Find("菜单_名称 = '" & dtn & "'")
If dr IsNot Nothing Then
If dr.IsNull("菜单_开启的表格名") Then
Return Nothing
Else
SystemReady = False
MainTable = Tables("Data")
For Each dt As DataTable In DataTables
If Not FilesU.Contains(dt.Name) Then
If dt.HasChanges = True Then
dt.Save
End If
If Fs2 = "" Then
Fs2 = dt.Name
Else
Fs2 = Fs2 & "|" & dt.Name
End If
DataTables.Unload(dt.Name) '卸载无关表
End If
Next
Output.Show("需要关闭:" & Fs2)
'DataTables.Unload(Fs2)
MessageBox.Show(1)
Dim Multi As String = dr("菜单_开启的表格名")
Output.show("需要打开:" & Multi)
Dim Files As Array = Multi.Split("|")
For i As Integer = 0 To Files.Length - 1
Dim dtn1 As String = Files(i)
If Not DataTables.Contains(dtn1) Then
DataTables.Load(dtn1) '加载表
End If
Next
SystemReady = True
End If
End If
但在实际点击菜单后程序并没有如我所愿 先卸载所有无关表, 然后加载需要的表, 而是不断跳出下面这个提示:
甚至 "MessageBox.Show(1)"这个问题测试都没有到达.
[此贴子已经被作者于2023/12/8 21:37:21编辑过]