以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]主表中如何自动填写字表内容!!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=130922)

--  作者:bashanren
--  发布时间:2019/2/11 22:40:00
--  [求助]主表中如何自动填写字表内容!!
各位老师新年好!!
在我的项目中,有如下一个窗口,是父窗口和子窗口同屏,如下图:

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

表“资质证件”与表“证书专业明细”建立了关联,在子表“证书专业明细”表属性的“DataColChanged”中的代码如下,目的是想在窗口中操作时,当子表中的“到期日期”值发生改变后,自动将“登记人”和“登记时间”填入到表中,然而,运行时,总是失败,不能自动填入,而单独在子表中(非窗口)操作又是可以自动填入“登记人”和“登记时间”,找不到如何更正,请大师帮忙,谢谢了!!
Select Case e.DataCol.Name
    Case "培训日期","有效期"
        If e.DataRow.IsNull("培训日期") OrElse e.DataRow.IsNull("有效期") Then
            e.DataRow("到期日期") = Nothing
            If e.DataRow.Isnull("培训日期") Then
                e.DataRow("有效期") = Nothing                
                MessageBox.show("培训日期不能空!","操作错误!",MessageBoxButtons.OK,MessageBoxicon.Error)                
            End If
        Else
            Select Case e.DataRow("有效期")
                Case "一年"
                    e.DataRow("到期日期") = e.DataRow("培训日期").AddYears(1)                    
                Case "两年"
                    e.DataRow("到期日期") = e.DataRow("培训日期").AddYears(2)                                     
                Case "三年"
                    e.DataRow("到期日期") = e.DataRow("培训日期").AddYears(3)                          
            End Select
                    Tables("证书专业明细").Current("登记人") = _UserName
                    Tables("证书专业明细").Current("登记时间") = Date.now
        End If
End Select

窗口运行如下图:

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看



--  作者:有点蓝
--  发布时间:2019/2/11 22:50:00
--  
Tables("证书专业明细").Current("登记人") = _UserName
Tables("证书专业明细").Current("登记时间") = Date.now

改为

e.DataRow("登记人") = _UserName
e.DataRow("登记时间") = Date.now

--  作者:bashanren
--  发布时间:2019/2/11 23:01:00
--  
谢 谢老师的指点,还请问老师,他们之间在用法上有什么区别吗?谢谢!!
--  作者:有点甜
--  发布时间:2019/2/12 9:21:00
--  

 

在事件里面,尽量使用 e.datarow 或者 e.row,在按钮或者无法确定引用e参数的时候,用 tables("").current,而且你的表名要写对(副本表和主表的表名不同)