以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]为什么有字段却提示字段不属于表  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=47115)

--  作者:chnfo
--  发布时间:2014/3/4 19:03:00
--  [求助]为什么有字段却提示字段不属于表
我一打开这个窗口就报出错误,说是sysadd不属于窗口表。
但我检查了一下代码,没发现什么错误,而且点了报错窗口的确定之后,这个表数据显示出来,有sysadd这个字段啊。
还请各位狐神指点迷津。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目19.table


--  作者:lsy
--  发布时间:2014/3/4 20:07:00
--  

If e.Table.Cols.Contains("SysAdd") = False Then
    Return
End If

Dim tv As WinForm.TreeView = e.Form.Controls("TreeView1")
If tv Is Nothing Then Return

If e.Table.Current IsNot Nothing Then  \'一定要判断是不是空表
    If e.Table.Current("SysAdd") = True Then
        For Each node As WinForm.TreeNode In tv.AllNodes
            If node.FullName.replace("\\",".") = e.Table.Current("SplitCode")   Then
                tv.SelectedNode = node
                Exit For
            End If
        Next
    End If
End If


--  作者:chnfo
--  发布时间:2014/3/4 20:27:00
--  
为啥子要加这个?


--  作者:lsy
--  发布时间:2014/3/4 20:33:00
--  

CurrentChanged先执行了,表后生成。

那就等表生成,有了SysAdd才执行CurrentChanged


--  作者:有点甜
--  发布时间:2014/3/4 20:35:00
--  
以下是引用chnfo在2014-3-4 20:27:00的发言:
为啥子要加这个?

 

你设置了 TableConChD 表是 sqltabel 类型,但并没有指定打开窗口的时候往表里填充真正的表。

 

方法一,把表改成副本表,绑定

 

方法二,编写sql语句


--  作者:chnfo
--  发布时间:2014/3/4 20:57:00
--  
方法二,编写sql语句

---这个咋个整法?

--  作者:有点甜
--  发布时间:2014/3/4 21:00:00
--  

 select * from {xxx} where 1=2

 

http://www.foxtable.com/help/topics/1907.htm


--  作者:chnfo
--  发布时间:2014/3/4 22:07:00
--  
再请教一下。
1、是不是在“SQLTable型Table-例如按照下图所示设置Table控件的属性”里写了SQL就可以不用加
If e.Table.Cols.Contains("SysAdd") = False Then
    Return
End If
这个判断了?
2、在SQLTable型Table-例如按照下图所示设置Table控件的属性"里写SQL可不可以用表达式变量,例如
select * from {TbA} where ID = \'" &  全局变量X & "\' and Code = \'" & tables("MM").current("Code") & "\'" 
之类?

--  作者:有点甜
--  发布时间:2014/3/4 22:24:00
--  

 第一个问题:是的,只要你的这个SqlTable里有SysAdd列,就不需要判断了。

 

 第二个问题:不能用变量。这个是最初始生成的时候执行的,不要太在意,因为你在运行过程中还用fill动态改变了


--  作者:chnfo
--  发布时间:2014/3/4 22:32:00
--  
意思是不是这样?
1、我直接在设置界面里写上select * from {A} ,而表A里正好有sysadd列,就不用加这个了
If e.Table.Cols.Contains("SysAdd") = False Then
    Return
End If
2、然后我在运行过程中用fill改变了,也没有什么影响了。
---根本目的是不用写这个判断

这样做也行?因为我的加密狗今天忘了带回来,没法测,所以先在这里请教一下,免得明天还要调试一会。