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


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

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

美女呀,离线,留言给我吧!
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编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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的发言:
既然是动态生成的表,就应该用代码动态设置的。

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


 回到顶部
美女呀,离线,留言给我吧!
yangming
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

以下是引用狐狸爸爸在2009-12-2 13:21:00的发言:
这种代码运行速度非常快,不用考虑效率。

你看用哪个更好?


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


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/12/2 14:03:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-12-2 13:55:00的发言:
如果打开项目后,SQLTable不会再生成,当然是AfterOpenProject好

明白了!谢放贺老师!


 回到顶部