以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]逻辑型  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=27129)

--  作者:dengzhihao
--  发布时间:2012/12/22 21:14:00
--  [求助]逻辑型
如何实现:表A有个逻辑型表达式,如果为真,则对表B第一列数值+1,如果为假,不变。
--  作者:菲舍尔
--  发布时间:2012/12/23 0:30:00
--  

对表B的那些行生效呢?

 

如果要定位的话就一定要在表A和表B之间建立关联,才能定位到表B的相关行

 

下面这个是表A是父表,表B是子表的例子

 

写在表A的事件中datacolchanged中

if e.datacol.name = "逻辑列名" then

   dim drs as list (of datarow) = e.datarow.getchildrows("表B")

   if drs.count > 0  and e.newvalue = true then

      for each dr as datarow in drs

           dr("第一列")=dr("第一列")+1

      next

   endif

endif


--  作者:dengzhihao
--  发布时间:2012/12/23 0:54:00
--  [求助]逻辑型
以下是引用菲舍尔在2012-12-23 0:30:00的发言:

对表B的那些行生效呢?

 

如果要定位的话就一定要在表A和表B之间建立关联,才能定位到表B的相关行

 

下面这个是表A是父表,表B是子表的例子

 

写在表A的事件中datacolchanged中

if e.datacol.name = "逻辑列名" then

   dim drs as list (of datarow) = e.datarow.getchildrows("表B")

   if drs.count > 0  and e.newvalue = true then

      for each dr as datarow in drs

           dr("第一列")=dr("第一列")+1

      next

   endif

endif



谢谢先!但有个小问题!选择一次,则+1;取消后,再选择又+1了。我希望是选择时+1,没选择时不变。
[此贴子已经被作者于2012-12-23 0:54:46编辑过]

--  作者:yinyb36
--  发布时间:2012/12/23 11:24:00
--  

If e.DataCol.name = "逻辑列名" Then
    Dim drs As List (of DataRow) = e.DataRow.getchildrows("表B")
    If drs.count > 0 Then
        For Each dr As DataRow In drs
            If e.newvalue = True Then
                dr("第一列")=dr("第一列")+1
            Else
                dr("第一列")=dr("第一列") - 1
            End If
        Next
    End If
End If

[此贴子已经被作者于2012-12-23 11:26:46编辑过]