以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  获取选取页面集合的页面名称  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=170226)

--  作者:采菊东篱下
--  发布时间:2021/7/17 10:00:00
--  获取选取页面集合的页面名称

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210717095230.png
图片点击可在新窗口打开查看
  如图,我想获取其中一个页面集合的名称,如何用通用代码显示,不用一个个列出。
比如希望这个TabControl1随选取页面不同而变化
Dim tc As WinForm.TabControl = e.Form.Controls("TabControl1")
Dim dt As DataTable = DataTables(tc.SelectedPage.Name)

--  作者:有点蓝
--  发布时间:2021/7/17 10:38:00
--  
还不如直接使用currenttable

msgbox(currenttable.Name)

--  作者:采菊东篱下
--  发布时间:2021/7/17 10:57:00
--  
Select Case e.StripItem.Name
    Case "删除行"
        Dim dt As DataRow = DataTables("资产").SQLFind("[科目名称] = \'" & CurrentTable.Current("科目名称") & "\' And [已审核] = True")
        Dim dr As DataRow = DataTables("财务数据源").SQLFind("[科目名称] = \'" & CurrentTable.Current("科目名称"))
        If dt Is Nothing And dr Is Nothing Then
            Dim Result As DialogResult
            Result = MessageBox.Show("是否确定要删除此单?","提示",MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If Result = DialogResult.Yes Then
                CurrentTable.Current.Delete()
            Else
                Return
            End If
        Else
            MessageBox.show("该科目含已审核初始数据,不能删除该行.")
        End If
End Select
我主要是不想重复红色代码,它的名称表名就是页面集合的页名,这里不能用CurrentTable。

--  作者:采菊东篱下
--  发布时间:2021/7/17 11:05:00
--  
删除行有点选动作还可以用这个,批量审核上面的所有表就不能用currenttable.Name这个了吧?因为根本没确定哪个表。
Select Case e.StripItem.Name
    Case "审核" \'保存代码
        Dim r As DataRow = DataTables(CurrentTable.Name).Find("[初始余额] Is not null")
        If r IsNot Nothing Then
            If User.IsRole("审核") Then
                r("审核人") = User.Name
                r("已审核") = True
            Else
                MessageBox.show("你无权审批!")
            End If
        End If
        DataTables(CurrentTable.Name).Save()
End Select

--  作者:有点蓝
--  发布时间:2021/7/17 11:07:00
--  
窗口全局enter事件

If Typeof e.sender Is WinForm.TabControl  Then \'判断控件是否是文本框
    Dim t As WinForm.TabControl = e.sender \'使用特定类型的变量引用控件
    vars("a") = t.SelectedPage.text
End If

调用
if vars("a") > "" then
Select Case e.StripItem.Name
    Case "删除行"
        Dim dt As DataRow = DataTables(vars("a")).SQLFind("[科目名称] = \'" & CurrentTable.Current("科目名称") & "\' And [已审核] = True")

--  作者:采菊东篱下
--  发布时间:2021/8/26 10:31:00
--  
因为没有点选动作,在AfterClose事件这样写,能不能简化这段代码,不要重复。
DataTables("资产").AllowEdit = True 
DataTables("资产").DeleteFor("[科目代码] = \'资产总计\'")
DataTables("资产").Save()
DataTables("资产").AllowEdit = False
DataTables("共同").AllowEdit = True
DataTables("共同").DeleteFor("[科目代码] = \'共同总计\'")
DataTables("共同").Save()
DataTables("共同").AllowEdit = False
DataTables("成本").AllowEdit = True 
DataTables("成本").DeleteFor("[科目代码] = \'成本总计\'")
DataTables("成本").DeleteFor("[科目代码] = \'资产共同成本总计\'")
DataTables("成本").Save()
DataTables("成本").AllowEdit = False
DataTables("负债").AllowEdit = True 
DataTables("负债").DeleteFor("[科目代码] = \'负债总计\'")
DataTables("负债").Save()
DataTables("负债").AllowEdit = False
DataTables("所有者权益").AllowEdit = True
DataTables("所有者权益").DeleteFor("[科目代码] = \'所有者权益总计\'")
DataTables("所有者权益").Save()
DataTables("所有者权益").AllowEdit = False
DataTables("损益").AllowEdit = True 
DataTables("损益").DeleteFor("[科目代码] = \'损益总计\'")
DataTables("损益").DeleteFor("[科目代码] = \'负债和所有者权益(或股东权益)总计\'")
DataTables("损益").Save()
DataTables("损益").AllowEdit = False
[此贴子已经被作者于2021/8/26 10:34:20编辑过]

--  作者:有点蓝
--  发布时间:2021/8/26 10:43:00
--  
dim sr() as string = {"损益","所有者权益",.........}
for each s as string in sr
DataTables(s).DeleteFor("[科目代码] = \'" & s & "总计\'")
DataTables(s).save
next
DataTables("成本").DeleteFor("[科目代码] = \'资产共同成本总计\'")
DataTables("成本").save
DataTables("损益").DeleteFor("[科目代码] = \'负债和所有者权益(或股东权益)总计\'")
DataTables("损益").save

--  作者:采菊东篱下
--  发布时间:2021/8/26 10:46:00
--  
表是锁定的,不解锁能直解删除保存吗?
--  作者:有点蓝
--  发布时间:2021/8/26 10:54:00
--  
测试一下不就知道了。AllowEdit 锁定只是不能直接到单元格编辑,不影响使用代码控制表格的数据