以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  单元格权限问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=151276)

--  作者:nbsugu_z
--  发布时间:2020/6/19 12:48:00
--  单元格权限问题
preparedit 代码
目的:  表有3列   A列  B列  C列       行间公式是C=A*B
现在要做的是:当A列没数值或数值是0时 C列直接手工输入 (并且不受重置列影响)
                    否则 C=A*B  ,并且C禁止修改(尽管可以重置列)

preparedit 代码
If e.Col.Name = "C列" Then 
    If e.DataRow.isnull("A")  Then
       e.Cancel = False 
   Else
e.Cancel = True
    End If
End If

datacolchanged 代码

Select Case e.DataCol.Name
Case "A列","B列"
        If e.DataRow.isnull("A列") OrElse e.DataRow.isnull("B列") Then
            e.DataRow("C列)=Nothing
Else
          e.DataRow("C列")=e.DataRow("A列")*e.DataRow("B列")
          End If  
End Select

出现问题:C列当A列有数值时,还是能修改
              C列当A列没有数值时,能修改,但是重置列后改为原来数值或0

--  作者:有点蓝
--  发布时间:2020/6/19 13:47:00
--  
先看一看:http://www.foxtable.com/webhelp/topics/0604.htm

preparedit 代码
If e.Col.Name = "C列" Then 
    If e.Row.isnull("A") =false Then
e.Cancel = True
    End If
End If

datacolchanged 代码
Select Case e.DataCol.Name
Case "A列","B列"
        If e.DataRow.isnull("A列") OrElse e.DataRow.isnull("B列") Then
if e.DataRow.isnull("C列)
            e.DataRow("C列)=Nothing
endif
Else
          e.DataRow("C列")=e.DataRow("A列")*e.DataRow("B列")
          End If  
End Select

--  作者:nbsugu_z
--  发布时间:2020/6/20 12:35:00
--  
已解决,谢谢指点