以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]全局表事件 CurrentChanged问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100806)

--  作者:lzzhx
--  发布时间:2017/5/18 17:24:00
--  [求助]全局表事件 CurrentChanged问题
[求助]全局表事件 CurrentChanged问题

我有一段代码,放在表事件 CurrentChanged中完全正常,但放在全局表事件 CurrentChanged 中执行时出现错误 

错误信息为       Invalid parameters for Select method

请问是什么原因造成的?需要注意什么?

--  作者:有点蓝
--  发布时间:2017/5/18 17:29:00
--  
代码贴出来看看
--  作者:lzzhx
--  发布时间:2017/5/18 17:42:00
--  
Dim tb As Table = Forms("共有日志窗口").Controls("Table1").Table
tb.StopRedraw
If tb.Rows.Count > 0 Then
    tb.DataTable.DeleteFor(True)
End If
Dim lbl数据表名 As WinForm.Label = Forms("共有日志窗口").Controls("lbl数据表名")
Dim lbl主键 As WinForm.Label = Forms("共有日志窗口").Controls("lbl主键")
lbl数据表名.text = CurrentTable.Name
lbl主键.text = CurrentTable.Current("_Identify")
If CurrentTable.Current IsNot Nothing AndAlso CurrentTable.Cols.Contains("日志") = True Then
    If CurrentTable.Current.IsNull("日志") = False AndAlso CurrentTable.Current("日志") <> "" Then
        Dim jihe As new List( of String)
        jihe.AddRange(CurrentTable.Current("日志").Split(vblf))
        If jihe.Count > 0 Then
            For Each jh As String In jihe
                Dim jihe1 As new List( of String)
                jihe1.AddRange(jh.Split("|"))
                If jihe1.Count = 7 Then
                    tb.AddNew()
                    tb.Current("字段") = jihe1(1).SubString(jihe1(1).IndexOf("=")+1,jihe1(1).Length-jihe1(1).IndexOf("=")-1)
                    tb.Current("原值") = jihe1(2).SubString(jihe1(2).IndexOf("=")+1,jihe1(2).Length-jihe1(2).IndexOf("=")-1)
                    tb.Current("新值") = jihe1(3).SubString(jihe1(3).IndexOf("=")+1,jihe1(3).Length-jihe1(3).IndexOf("=")-1)
                    tb.Current("修改日期") = Cdate(jihe1(4).SubString(jihe1(4).IndexOf("=")+1,jihe1(4).Length-jihe1(4).IndexOf("=")-1))
                    tb.Current("修改人") = jihe1(5).SubString(jihe1(5).IndexOf("=")+1,jihe1(5).Length-jihe1(5).IndexOf("=")-1)
                    tb.Current("修改终端") = jihe1(6).SubString(jihe1(6).IndexOf("=")+1,jihe1(6).Length-jihe1(6).IndexOf("=")-1)
                End If
            Next
        End If
    End If
Else
    lbl主键.text = "无日志字段"
End If
tb.ResumeRedraw



问题出在红色代码处,但在表事件 CurrentChanged中完全正常


--  作者:有点色
--  发布时间:2017/5/18 18:04:00
--  

 你要判断一下e.Table.name

 

If e.Table.name = tb.name Then return


--  作者:blackzhu
--  发布时间:2017/5/19 11:15:00
--  
这个事件的错误有点吼不住,我表名判断了,空行排除了,就是不行.也真是奇怪了!
--  作者:有点蓝
--  发布时间:2017/5/19 11:36:00
--  
3楼的代码是不是会触发其它的事件,看看哪里用到DataTable.Select、Table.Select这类函数的