以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教老师,如何实现申请表被处理后进行标记  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=99839)

--  作者:wakai
--  发布时间:2017/4/27 16:53:00
--  请教老师,如何实现申请表被处理后进行标记
有包材申请明细表,合同明细表,并做关联
要实现包材申请表的项目添加到合同明细表后,在包材申请表的列是否采购显示为true

代码如下,写在PositionChanged中,
If Tables("包材申请明细表.合同明细表").Rows.Count > 0 Then
Tables("包材申请明细表").Current("是否采购") = True
Else 
Tables("包材申请明细表").Current("是否采购") = False
End If

现在包材申请明细表的内容添加后,要逐行点一次,“是否采购”才会显示结果,这样不具操作,
加在CurrentChanged,窗体AfterLoad,按钮后面都不行,请老师如何解决
[此贴子已经被作者于2017/4/27 17:00:33编辑过]

--  作者:有点色
--  发布时间:2017/4/27 16:56:00
--  

 你的逻辑是什么?申请表怎么操作以后,合同表要怎么响应?

 

 这个?http://www.foxtable.com/webhelp/scr/2649.htm

 


--  作者:wakai
--  发布时间:2017/4/27 17:02:00
--  
老师好,刚才没写完按了回车,具体如下
有包材申请明细表,合同明细表,并做关联
要实现包材申请表的项目添加到合同明细表后,在包材申请表的列是否采购显示为true

代码如下,写在PositionChanged中,
If Tables("包材申请明细表.合同明细表").Rows.Count > 0 Then
Tables("包材申请明细表").Current("是否采购") = True
Else 
Tables("包材申请明细表").Current("是否采购") = False
End If

现在包材申请明细表的内容添加后,要逐行点一次,“是否采购”才会显示结果,这样不具操作,
加在CurrentChanged,窗体AfterLoad,按钮后面都不行,请老师如何解决

--  作者:有点色
--  发布时间:2017/4/27 17:09:00
--  

 用表达式列做比较简单,你写公式判断一下就行了

 

iif(Count(Child(设置关联名称).子表某列列名) > 0, true, False)


--  作者:wakai
--  发布时间:2017/4/27 17:15:00
--  
iif(Count(Child(包材申请明细表.合同明细表).是否采购) > 0, true, False)这样吗,代码写在哪里好
--  作者:有点色
--  发布时间:2017/4/27 17:17:00
--  

 如果要写代码处理,你需要在几个事件写代码

 

 父表DataColChanged事件

 

If e.DataCol.name = "编号" Then
    Dim crs As List(of DataRow) = e.DataRow.GetChildRows("合同表")
    If crs.count > 0 Then
        pr("是否采购") = True
    Else
        pr("是否采购") = True
    End If
End If

 

 子表DataColChanged

 

If e.DataCol.name = "编号" Then
    DataTables("申请表").DataCols("编号").RaiseDataColChanged("编号=\'" & e.oldvalue & "\'")

    DataTables("申请表").DataCols("编号").RaiseDataColChanged("编号=\'" & e.DataRow("编号") & "\'")
End If

 子表DataRowDeleting事件也要写代码

 

DataTables("申请表").DataCols("编号").RaiseDataColChanged("编号=\'" & e.DataRow("编号") & "\'")

 

 


--  作者:有点色
--  发布时间:2017/4/27 17:18:00
--  
以下是引用wakai在2017/4/27 17:15:00的发言:
iif(Count(Child(包材申请明细表.合同明细表).是否采购) > 0, true, False)这样吗,代码写在哪里好

 

设置表达式列 http://www.foxtable.com/webhelp/scr/0025.htm

 

iif(Count(Child(这里填你设置关联时候的名字).是否采购) > 0, true, False)


--  作者:有点色
--  发布时间:2017/4/27 17:19:00
--  
 建议用6楼的方法处理。
--  作者:wakai
--  发布时间:2017/4/27 17:31:00
--  
谢谢老师,明白了,表达式跟ACCESS类似