以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于表里某一列数据为一个值后,不能通过窗体进行修改的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=84793)

--  作者:scofields
--  发布时间:2016/5/10 16:51:00
--  关于表里某一列数据为一个值后,不能通过窗体进行修改的问题
红袍老师,上次向你请教了一个关于窗体中控件不可用的问题,我的窗体中有一个“TableS”控件,并绑定了一个表,我想实现当表中列“状态”为“已生效”时,不能编辑。但我加入以下代码后,不管是不是“已生效”,都变成不可编辑状态,这是什么问题?求解。
For Each r As Row In Tables("JHS").Rows
    If r("状态") ="已生效" Then
 Forms("销售计划录入2").Controls("ComboBox3").Enabled = False
    Forms("销售计划录入2").Controls("ComboBox1").Enabled = False
    Forms("销售计划录入2").Controls("ComboBox2").Enabled = False
    Forms("销售计划录入2").Controls("子客户").Enabled = False
    Forms("销售计划录入2").Controls("数量").Enabled = False
    Forms("销售计划录入2").Controls("textbox1").Enabled = False
Else
 Forms("销售计划录入2").Controls("ComboBox3").Enabled = True
    Forms("销售计划录入2").Controls("ComboBox1").Enabled = True
    Forms("销售计划录入2").Controls("ComboBox2").Enabled = True
    Forms("销售计划录入2").Controls("子客户").Enabled = True
    Forms("销售计划录入2").Controls("数量").Enabled = True
    Forms("销售计划录入2").Controls("textbox1").Enabled = True

          End If
Next

--  作者:大红袍
--  发布时间:2016/5/10 16:55:00
--  

表格的Click事件

 

If Forms("销售计划录入2").Opened Then
    If e.Row("状态") ="已生效" Then
        Forms("销售计划录入2").Controls("ComboBox3").Enabled = False
        Forms("销售计划录入2").Controls("ComboBox1").Enabled = False
        Forms("销售计划录入2").Controls("ComboBox2").Enabled = False
        Forms("销售计划录入2").Controls("子客户").Enabled = False
        Forms("销售计划录入2").Controls("数量").Enabled = False
        Forms("销售计划录入2").Controls("textbox1").Enabled = False
    Else
        Forms("销售计划录入2").Controls("ComboBox3").Enabled = True
        Forms("销售计划录入2").Controls("ComboBox1").Enabled = True
        Forms("销售计划录入2").Controls("ComboBox2").Enabled = True
        Forms("销售计划录入2").Controls("子客户").Enabled = True
        Forms("销售计划录入2").Controls("数量").Enabled = True
        Forms("销售计划录入2").Controls("textbox1").Enabled = True
    End If
End If

 

 


--  作者:scofields
--  发布时间:2016/5/10 16:57:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160510165643.jpg
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/5/10 17:05:00
--  

AfterSelChange事件

 

If Forms("销售计划录入2").Opened Then
    Dim r As Row = e.Table.Rows(e.NewRange.RowSel)
    If r("状态") ="已生效" Then
        Forms("销售计划录入2").Controls("ComboBox3").Enabled = False
        Forms("销售计划录入2").Controls("ComboBox1").Enabled = False
        Forms("销售计划录入2").Controls("ComboBox2").Enabled = False
        Forms("销售计划录入2").Controls("子客户").Enabled = False
        Forms("销售计划录入2").Controls("数量").Enabled = False
        Forms("销售计划录入2").Controls("textbox1").Enabled = False
    Else
        Forms("销售计划录入2").Controls("ComboBox3").Enabled = True
        Forms("销售计划录入2").Controls("ComboBox1").Enabled = True
        Forms("销售计划录入2").Controls("ComboBox2").Enabled = True
        Forms("销售计划录入2").Controls("子客户").Enabled = True
        Forms("销售计划录入2").Controls("数量").Enabled = True
        Forms("销售计划录入2").Controls("textbox1").Enabled = True
    End If
End If


--  作者:scofields
--  发布时间:2016/5/10 17:14:00
--  
谢谢红袍老师,完美解决!
--  作者:scofields
--  发布时间:2016/5/10 17:35:00
--  
红袍老师,我有一个问题:我是在云服务器上架构的SQL SERVER数据库,这个表中“状态”列的数据是随时都会变化的,多人操作嘛!我想实现的是当单击行数据时,自动刷新行数据;当修改保存数据前,自动判断是否在保存前被其他用户审核为“已生效”,如果是“已生效”,则撤销修改,并弹出对话框“已生效,无法修改”;否则,则修改成功。
--  作者:大红袍
--  发布时间:2016/5/10 17:39:00
--  

 你可以任意获取后台值的

 

http://www.foxtable.com/help/topics/2955.htm

 


--  作者:scofields
--  发布时间:2016/5/10 17:58:00
--  
好的,我试试
--  作者:scofields
--  发布时间:2016/5/10 18:11:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看红袍老师,这是什么情况啊?
[此贴子已经被作者于2016/5/10 18:11:15编辑过]

--  作者:大红袍
--  发布时间:2016/5/10 18:12:00
--  

 新增的行没有必要判断,你只有修改以前的数据,才需要判断的。

 

http://www.foxtable.com/help/topics/0428.htm