谢谢老师的耐心指导
当前已经实现如下测试表数据,但还有几个问题需要老师指导下!
1、怎么实现在当前第1、2、3、4、5节中有值的情况下,同步完成第1、2、3、4、5节名称字段的值得填充
(根据第1、2、3、4、5节中的值 去sys navigation中id=第1、23、4、5节值符合条件的数据行 获取name的值)
2、第2、3、4、5节不一定有值,如果没有值 那窗口id就等于上一节的值对应到sys navgation中去查找id符合条件的值 中的formid
3、第2、3、4、5节不一定有值,如果没有值 那导航名就等于上一节的值对应到sys navgation中去查找id符合条件的值 中的name
效果图:
此主题相关图片如下:222.png

按钮执行代码:
If DataTables.Contains("测试表") Then '如果表已经加载
DataTables.Unload("测试表") '卸载表
End If
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Conne cti
cmd.CommandText = "Se le ct * From sys_Navigation"
dt = cmd.ExecuteReader()
Dim dtb As New DataTableBuilder("测试表")
dtb.AddDef("第1节", Gettype(String), 64)
dtb.AddDef("第1节名称", Gettype(String), 64)
dtb.AddDef("第2节", Gettype(String), 64)
dtb.AddDef("第2节名称", Gettype(String), 64)
dtb.AddDef("第3节", Gettype(String), 64)
dtb.AddDef("第3节名称", Gettype(String), 64)
dtb.AddDef("第4节", Gettype(String), 64)
dtb.AddDef("第4节名称", Gettype(String), 64)
dtb.AddDef("第5节", Gettype(String), 64)
dtb.AddDef("第5节名称", Gettype(String), 64)
dtb.AddDef("窗体id", Gettype(String), 64)
dtb.AddDef("导航名", Gettype(String), 64)
dtb.Build()
Dim drs As List(of DataRow)
drs = dt.Select("faID is null")
For Each dr As DataRow In drs
Functions.Execute("AddChildren",dr("ID"),dr("ID"),dt)
Next
MainTable=Tables("测试表")
内部函数代码如下:【红色部分代码怎么修正才能实现上述123功能点呢?】
Dim dr1 As String = args(0)
Dim faIDpath As String = args(1)
Dim dt As DataTable = args(2)
Dim dt1 As DataTable
Dim cmd As New SQ LCommand
cmd.Conn ectionN ame = "主数据源"
cmd.Comma ndText = "Sel ect * Fr om sys_Navigation"
dt1 = cmd.ExecuteReader()
Dim drs As List(of DataRow)
drs = dt.S elect("faID ='" & dr1 & "'")
If drs.count = 0 Then
Dim dr2 As DataRow = DataTables("测试表").AddNew()
Dim sr() As String = faIDpath.split(".")
For i As Integer = 0 To sr.length - 1
dr2("第" & (i+1) & "节") = sr(i)
If sr(i)<>"" Then
Dim Products As List(Of String())
Products = dt.sqlGetValues("formID|Name","FaID ='" & sr(i) & "'")
For Each Product As String() In Products
'dr2("窗体id") = dr2("窗体id")
'dr2("导航名") = dr2("name")
dr2("窗体id") = Products(0)
dr2("导航名") = Products(1)
Next
End If
Next
Else
For Each dr As DataRow In drs
Functions.Execute("AddChildren",dr("ID"),faIDpath & "." & dr("ID"),dt)
Next
End If
[此贴子已经被作者于2022/9/9 1:47:43编辑过]