以文本方式查看主题
- 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
--
果然是这个原因造成的。谢谢有点甜!
|