以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sys_开头的系统列的值不能被引用的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27291)

--  作者:zpx_2012
--  发布时间:2012/12/27 17:02:00
--  sys_开头的系统列的值不能被引用的问题

各位老师,

 

我在表中增加了一个“sys_传递说明”的系统列,在PositionChanged全局表事件中用如下代码将每行的传递说明显示在窗口的“传递说明”文本框中,

If e.Table.Cols.contains("sys_传递说明") Then
    Forms("导航").Controls("传递说明").Value = e.Table.Current("sys_传递说明")
End If

 

当以开发者登陆时窗口的“传递说明”文本框中可以看见内容,但如果以其他非开发者的用户登陆时窗口的“传递说明”文本框中就什么都看不见。是什么原因或者有什么改进的办法(在系统列不改为普通列的情况下)?

 

谢谢!


--  作者:狐狸爸爸
--  发布时间:2012/12/27 17:15:00
--  
e.Table.Current.DataRow.BaseRow("sys_传递说明")
--  作者:zpx_2012
--  发布时间:2012/12/27 17:24:00
--  

谢谢狐爸,还是不可以,我只要把“sys_传递说明”改为“传递说明”的话就没有这个问题。还有没有其他办法?

 


--  作者:狐狸爸爸
--  发布时间:2012/12/27 17:39:00
--  
应该不会有问题的,说明你代码中列名称错了吧
--  作者:zpx_2012
--  发布时间:2012/12/27 18:18:00
--  

就这么两句

If tbs.Contains(e.Table.name) And Forms("导航").Opened Then
    \'给传递说明文本框赋值
    If e.Table.Cols.contains("sys_传递说明") Then
        Forms("导航").Controls("传递说明").Value = e.Table.Current.DataRow.BaseRow("sys_传递说明")
    End If
End If

 

而且问题是以开发者登陆进入后可以啊,而其他用户登陆就没有,是不是红色的代码也要改一下,因为非开发者登陆sys_的列不会显示。关键是如果将表中的列名由“sys_传递说明”改为“传递说明”后就没问题说明也不是这个原因。

 


此主题相关图片如下:360截图20121227181438446.jpg
按此在新窗口浏览图片

此主题相关图片如下:360截图20121227181657307.jpg
按此在新窗口浏览图片
[此贴子已经被作者于2012-12-27 18:24:05编辑过]

--  作者:有点甜
--  发布时间:2012/12/27 20:17:00
--  

问题出在这里:

 

 If e.Table.Cols.contains("sys_传递说明") Then

 

sys开头的列不可见,所以e.Table.Cols是不会包括这里的,但是你可以使用这列的值。

 

要判断的话,改为:

 

If e.Table.DataTable.BaseTable.Columns.contains("sys_传递说明") Then

 

 


--  作者:zpx_2012
--  发布时间:2012/12/27 20:59:00
--  
果然是这个原因造成的。谢谢有点甜!