以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154159)

--  作者:outcat
--  发布时间:2020/9/6 5:24:00
--  代码求助
If Tables("月缴费表").Current.Isnull("姓名") = False Then
    Dim d As Date = Tables("月缴费表").Current("日期")
    Dim r As Row = Tables("月缴费表").Current
    Dim Filter As String
    Filter = "日期 < \'" & d & "\' and 姓名 = \'" & r("姓名") & "\'"
    
    Dim dr As DataRow = DataTables("月缴费表").find(Filter,"日期 desc")
    If dr IsNot Nothing Then
        r("电费_期初") = dr("电费_期末")
        r("姓名") = dr("姓名")
    End If
End If

老师,我这个是一个默认取该表里上个月期末值,作为本月的期初值,但是有特殊情况,电表坏了,换电表的这种情况,那么就不能这样取值了,我现在是能手工修改,但还是变为自动取得值,老师,这个怎么处理呀,能改过来呢,请教老师。

--  作者:有点蓝
--  发布时间:2020/9/6 20:05:00
--  
什么时候可以这样取值?什么时候不可以?有什么条件可以判断?
--  作者:outcat
--  发布时间:2020/9/6 22:16:00
--  
If Tables("月缴费表").Current.Isnull("姓名") = False Then
    If Tables("月缴费表").Current("电表状态") = 0 Then
        Dim d As Date = Tables("月缴费表").Current("日期")
        Dim r As Row = Tables("月缴费表").Current
        Dim Filter As String
        Filter = "日期 < \'" & d & "\' and 姓名 = \'" & r("姓名") & "\'"
        
        Dim dr As DataRow = DataTables("月缴费表").find(Filter,"日期 desc")
        If dr IsNot Nothing Then
            r("电费_期初") = dr("电费_期末")
            r("姓名") = dr("姓名")
        End If
    ElseIf Tables("月缴费表").Current("电表状态") = 1 Then
        Tables("月缴费表").Current("电费_期初") = Nothing
    End If
End If

老师,我是这样弄得,给 住户表, 月缴费表 都加入一个逻辑字段   电表状态,   0是默认的,代表状态正常,Tables("月缴费表").Current("电表状态"),这个值是是通过录入时,通过录入住户姓名,传过来的。当出现情况时,修改这个字段。为1时,即代表是换了新电表,不默认取值,重新手工填入期初值,完了再修改用户表的  电表状态字段,实现下个月时,再默认的取这个新电表上个月的期末值。现在问题是  红色代码结果是  不管  住户表 用电状态,判断条件不起作用,期初值 都为空了。

老师,这种方法可行吗,请教了。

--  作者:有点蓝
--  发布时间:2020/9/6 22:22:00
--  
去掉这2句

    ElseIf Tables("月缴费表").Current("电表状态") = 1 Then
        Tables("月缴费表").Current("电费_期初") = Nothing