以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  MainTable = Tables("合同") 不激活MainTableChanging  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=109912)

--  作者:baiheinet
--  发布时间:2017/11/22 16:29:00
--  MainTable = Tables("合同") 不激活MainTableChanging

MainTableChanging 如下


If DataTables.Contains(e.NewTableName)=False
    MessageBox.Show("对不起,你没有相应的权限,请联系信息部开通!")
    e.Cancel = True
End If


在代码写 MainTable = Tables("合同") 不激活上述时间 如何破

--  作者:有点甜
--  发布时间:2017/11/22 16:51:00
--  

1、你条件本身就有问题。如果能使用 Tables("合同") ,那么肯定不满足 DataTables.Contains(e.NewTableName)=False

 

2、你可以在事件加入msgbox(123)看是否触发

 

3、只有表格切换的时候才会触发事件,如果你现在就在合同表,肯定不触发。


--  作者:baiheinet
--  发布时间:2017/11/22 19:15:00
--  
你说的对 

我现在的需求 就是在执行MainTable = Tables("合同")

之前 先验证一下 这个表加载没有 如果没有 不是显示系统的的那个错误提示没有 Tables("合同")

而是 我自定义的提示 MessageBox.Show("对不起,你没有相应的权限,请联系信息部开通!")

而这个需求菜单里非常多 我不能在每个MainTable = Tables("合同") 前写验证

所以我选择了全局表事件 MainTableChanging

--  作者:有点甜
--  发布时间:2017/11/22 21:55:00
--  

全局代码

 

Property MainTable As String

Get

Return foxtable.MainTable.name

End Get

Set  (ByVal value As String)

If Tables.contains(value) Then
    foxtable.MainTable = Tables(value)
Else
    msgbox("不存在表[" & value & "]")
End If
End Set
End Property

 

调用代码

 

MainTable = "表C"

[此贴子已经被作者于2017/11/22 21:56:50编辑过]

--  作者:baiheinet
--  发布时间:2017/11/23 14:18:00
--  
还是老问题啊

还是要把MainTable = Tables("合同") 

全部改一遍MainTable = "合同"

--  作者:有点甜
--  发布时间:2017/11/23 16:06:00
--  

mark,全局代码

 

Public Class myTableCollection
Public Sub new
End Sub

Default Public readonly Property Item(tname As String) As Table
Get
If Foxtable.Tables.Contains(tname) Then
    Return Foxtable.Tables(tname)
Else
    msgbox("测试,不存在表【" & tname & "】")
    Return Nothing
End If
End Get
End Property

End Class

Public mytables = new myTableCollection

readonly Property Tables As myTableCollection
Get
Return mytables
End Get
End Property

 

测试电脑代码

 

msgbox(Tables.Gettype.name)
msgbox(Tables("表B").name)
MainTable = Tables("表B")
MainTable = Tables("表abc")


--  作者:有点甜
--  发布时间:2017/11/23 16:57:00
--  

完整点改成这样,基本就没问题了。

 

Public Class myTableCollection

Public Sub new
End Sub

Public Function GetEnumerator() As System.Collections.Generic.IEnumerator(Of Table)
Return foxtable.Tables.GetEnumerator
End Function


Default Public readonly Property Item(tname As String) As Table
Get
If Foxtable.Tables.Contains(tname) Then
    Return Foxtable.Tables(tname)
Else
    msgbox("测试,不存在表【" & tname & "】")
    Return Nothing
End If
End Get
End Property

Public readonly Property count() As Integer
Get
Return foxtable.Tables.count
End Get
End Property

Public readonly Property contains(tname As String) As Boolean
Get
Return foxtable.Tables.contains(tname)
End Get
End Property

End Class

Public mytables = new myTableCollection

readonly Property Tables As myTableCollection
Get
Return mytables
End Get
End Property


--  作者:affixed
--  发布时间:2018/12/26 12:01:00
--  
甜版主,请问这段代码如何使用?
--  作者:有点蓝
--  发布时间:2018/12/26 12:09:00
--  
看6楼。
--  作者:affixed
--  发布时间:2018/12/26 12:37:00
--  

Public Class myTableCollection
Public Sub new
End Sub

Default Public readonly Property Item(tname As String) As Table
Get
If Foxtable.Tables.Contains(tname) Then
    Return Foxtable.Tables(tname)
Else
    msgbox("测试,不存在表【" & tname & "】")
    Return Nothing
End If
End Get
End Property

End Class

Public mytables = new myTableCollection

readonly Property Tables As myTableCollection
Get
Return mytables
End Get
End Property


那这段代码是什么时候执行的呢?