以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  锁定的列保存后再打开项目后无效?(已变通完成).  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=5233)

--  作者:yangming
--  发布时间:2009/12/1 18:31:00
--  锁定的列保存后再打开项目后无效?(已变通完成).
下午外出前,我做的锁定列,保存文件,现在我打开文件,发现原,锁定的列并不能保存,还是没有锁定.原因何在?
[此贴子已经被作者于2009-12-2 14:04:14编辑过]

--  作者:czy
--  发布时间:2009/12/1 18:35:00
--  
的确如此。
--  作者:狐狸爸爸
--  发布时间:2009/12/2 8:43:00
--  
菜单的锁定表和锁定列是临时的
通过表属性或者列属性设置,才是永久的。

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

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

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

--  作者:狐狸爸爸
--  发布时间:2009/12/2 10:45:00
--  秀一下:进销存软件
既然是动态生成的表,就应该用代码动态设置的。
--  作者:yangming
--  发布时间:2009/12/2 11:39:00
--  
以下是引用狐狸爸爸在2009-12-2 10:45:00的发言:
既然是动态生成的表,就应该用代码动态设置的。

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


--  作者:狐狸爸爸
--  发布时间:2009/12/2 12:05:00
--  

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

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


--  作者:yangming
--  发布时间: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
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/12/2 13:21:00
--  
这种代码运行速度非常快,不用考虑效率。