以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 请老大看看这是什么错误 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=7581)
|
-- 作者:cxabc123
-- 发布时间:2010/7/13 9:29:00
-- 请老大看看这是什么错误
此主题相关图片如下:7198bb70-d541-42d9-980b-150a0d188fb4.jpg

请老大看看这是什么问题,引发错误的代码是:
\'\'\'数据表之间相互引用数据 Dim dt As Datatable = Datatables("数据引用总表") For Each c As Col In Currenttable.Cols Dim dr As Datarow =dt.Find("[目标表] = \'" & Currenttable.Datatable.Name & "\' And [目标列] = \'" & c.Name & "\'") If dr IsNot Nothing Then Dim yb As String = dr("源表") Dim yl As String = dr("源列") Dim mb As String = dr("目标表") Dim ml As String = dr("目标列") Dim ygl As String = dr("源关联") Dim bgl As String = dr("标关联") Dim ybdr As Datarow = Datatables(yb).Find("[" & ygl & "] = \'" & Currenttable.Current(bgl) & "\'") If ybdr IsNot Nothing Then If ybdr.IsNull(yl) Then Currenttable.Current(ml) = Nothing Else Currenttable.Current(ml) = ybdr(yl) End If End If End If Next
上述代码引发错误的条件是,当前表没有行,或没有加载行。
请老大指点,如何解决这个问题。
|
-- 作者:狐狸爸爸
-- 发布时间:2010/7/13 9:56:00
--
看看全局表事件的CurrentChanged
|
-- 作者:cxabc123
-- 发布时间:2010/7/13 10:24:00
--
上面贴出的代码就是CurrentChanged 的全局表事件
|
-- 作者:cxabc123
-- 发布时间:2010/7/13 10:26:00
--
我的项目的设计大部分已经完成,就在设置加载的时候又出现了这样的现象,真是搞不明白,错在哪里
|
-- 作者:cxabc123
-- 发布时间:2010/7/13 10:28:00
--
出现上面的错误,是在另一个表点击的时候就会出现,这个表于另一个表有关联,且这个表没有行或加载行的时候出现
|
-- 作者:cxabc123
-- 发布时间:2010/7/13 10:34:00
--
老大,我想是不是应该判断没有行的情况,没有行的判断如何写,请老大指点
|
-- 作者:狐狸爸爸
-- 发布时间:2010/7/13 10:46:00
--
你贴的是全局表事件中的代码,还是表事件中的代码?
我觉得全局表事件不应该有这样的代码。
实在不行,就传项目上来看看
[此贴子已经被作者于2010-7-13 10:47:03编辑过]
|
-- 作者:cxabc123
-- 发布时间:2010/7/13 10:50:00
--
这是全局表事件代码,我的这段代码的功能是在一个数据引用总表中设置表间的数据引用,然后由这段代码来实现,这样给用户更大的方便。没有行的判断如何写,请老大指点
我想应该有解决的办法
[此贴子已经被作者于2010-7-13 10:52:42编辑过]
|
-- 作者:cxabc123
-- 发布时间:2010/7/13 11:12:00
--
老大,解决了,就是加一句判断行的句子。
|
-- 作者:狐狸爸爸
-- 发布时间:2010/7/13 11:14:00
--
通过代码看不出啥,全局表事件对任何表都有效,也就是在任何一个表中换行,都会执行全局CurrentChanged事件,问题的原因可能也在此。
If e.Table.Name = "XXX" Then
Dim dt As Datatable = Datatables("数据引用总表")
For Each c As Col In Currenttable.Cols Dim dr As Datarow =dt.Find("[目标表] = \'" & Currenttable.Datatable.Name & "\' And [目标列] = \'" & c.Name & "\'") If dr IsNot Nothing Then Dim yb As String = dr("源表") Dim yl As String = dr("源列") Dim mb As String = dr("目标表") Dim ml As String = dr("目标列") Dim ygl As String = dr("源关联") Dim bgl As String = dr("标关联") Dim ybdr As Datarow = Datatables(yb).Find("[" & ygl & "] = \'" & Currenttable.Current(bgl) & "\'") If ybdr IsNot Nothing Then If ybdr.IsNull(yl) Then Currenttable.Current(ml) = Nothing Else Currenttable.Current(ml) = ybdr(yl) End If End If End If Next
|