Foxtable(狐表)用户栏目专家坐堂 → 锁定的列保存后再打开项目后无效?(已变通完成).


  共有14573人关注过本帖树形打印复制链接

主题:锁定的列保存后再打开项目后无效?(已变通完成).

美女呀,离线,留言给我吧!
yangming
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
锁定的列保存后再打开项目后无效?(已变通完成).  发帖心情 Post By:2009/12/1 18:31:00 [只看该作者]

下午外出前,我做的锁定列,保存文件,现在我打开文件,发现原,锁定的列并不能保存,还是没有锁定.原因何在?
[此贴子已经被作者于2009-12-2 14:04:14编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/12/1 18:35:00 [只看该作者]

的确如此。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/12/2 8:43:00 [只看该作者]

菜单的锁定表和锁定列是临时的
通过表属性或者列属性设置,才是永久的。

 回到顶部
美女呀,离线,留言给我吧!
yangming
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/12/2 10:40:00 [只看该作者]

以下是引用狐狸爸爸在2009-12-2 8:43:00的发言:
菜单的锁定表和锁定列是临时的
通过表属性或者列属性设置,才是永久的。

晕死,动态生成的表,不好设置表属性及列属性啊

[此贴子已经被作者于2009-12-2 10:42:31编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
秀一下:进销存软件  发帖心情 Post By:2009/12/2 10:45:00 [只看该作者]

既然是动态生成的表,就应该用代码动态设置的。

 回到顶部
美女呀,离线,留言给我吧!
yangming
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/12/2 11:39:00 [只看该作者]

以下是引用狐狸爸爸在2009-12-2 10:45:00的发言:
既然是动态生成的表,就应该用代码动态设置的。

我就是用代码设置好锁定了,但是想保存下来,但是无法保存啊,总不能每次进入前都再锁定一次吧?


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/12/2 12:05:00 [只看该作者]

呵呵,不是每次都设定一次,而是每次都执行一次锁定列的代码。
就象你每次进入系统,都得重新执行代码生成SQLTable一样。

你可以在窗口的AfterLoad事件锁定列,或者在SQLTable的Fill方法后锁定列。


 回到顶部
美女呀,离线,留言给我吧!
yangming
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/12/2 13:05:00 [只看该作者]

我做了个模板表,专门用于放置锁定列的表名及列名,然后在项目的

AfterOpenProject事件中放入以下的代码,这样每次打开项目后,就会对所有表进行查找,如找到与模板中表名和列名相同的,就锁定

For Each dt As DataTable In DataTables
    For Each dc As DataCol In dt.DataCols
        For Each dr As Datarow In DataTables("模板").Datarows
            'Dim dr As row = Tables("模板").Current
            IF dt.Name=dr("表名") AndAlso dc.Name = dr("列名") Then
                dt.DataCols(dc.Name).AllowEdit = False
            End If
        Next
    Next
Next

 回到顶部
美女呀,离线,留言给我吧!
yangming
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/12/2 13:08:00 [只看该作者]

也可以这样,在窗口节点的事件中加入这样的代码.
For Each dc As DataCol In DataTables(Vars("表名")).DataCols
        For Each dr As Datarow In DataTables("模板").Datarows
                 IF Vars("表名")=dr("表名") AndAlso dc.Name = dr("列名") Then
                DataTables(Vars("表名")).DataCols(dc.Name).AllowEdit = False
              DataTables("XC_帐套默认_Table1").DataCols(dc.Name).AllowEdit = False
            End If
        Next
    Next

两种方法各人利弊,放在项目中,只要每次打开表执行一次便可,但是由于在所有表中查找,如果表多,那可能会影响速度,放在窗口的节点中,每次选择节点就要执行一次,好象又太频繁了,我真没想好放在何处更好,狐友帮我出出主意吧,呵呵
[此贴子已经被作者于2009-12-2 13:10:51编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/12/2 13:21:00 [只看该作者]

这种代码运行速度非常快,不用考虑效率。

 回到顶部
总数 13 1 2 下一页