Foxtable(狐表)用户栏目专家坐堂 → 自动取数


  共有2176人关注过本帖树形打印复制链接

主题:自动取数

帅哥哟,离线,有人找我吗?
nbsugu_z
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:408 积分:3642 威望:0 精华:0 注册:2017/4/8 8:59:00
自动取数  发帖心情 Post By:2020/4/29 12:35:00 [只看该作者]

表dk_lxb 有以下列
   产品编号 (cpbm),  付息日期(fxrq), 起息日期(qxrq),止息日期(zxrq), 标志(bz)
当窗口按钮新增一行时,(bz)是在窗口新增行时默认填充的。要求当bz=1时执行如下代码
过程是:先查找不同产品编号中的上次zxrq最大的日期,找出后:
            新增行的qxrq=找出的zxrq加一天 (上次计算日止第二天重新开始计息开始日期)
            新增行的zxrq=找出的zxrq加一月  (上次计算日止加一个月结算期)
            新增行的fxrq=zxrq加一天 (利息计算止日第二天付款)
问题:我在当窗口按钮新增一行时,这三个日期出不来,是什么原因?

'以下增加一个月自动填写所有日期
Select Case e.DataCol.name
    Case "cpbm","bz"
        If e.DataRow.IsNull("cpbm") OrElse e.DataRow.IsNull("bz") Then
            e.DataRow("fxrq") = Nothing
            e.DataRow("qxrq") = Nothing
            e.DataRow("zxrq") = Nothing
        Else
                Dim ddr0 As DataRow
                Dim max As Date
                max = e.DataTable.Compute("Max(zxrq)")
                ddr0 = DataTables("dk_lxb").Find("[cpbm] = '" & e.DataRow("cpbm")  & "' And [zxrq] = #" & Max & "#")
                If e.DataRow("bz")=1 Then               
                Dim dd4 As Date = e.DataRow("zxrq") '止息日期
                Dim dd1 As Date = dd4.AddDays(1)     '起息日期
                Dim dd2 As Date = dd4.addmonths(1)   '第二次止息日期
                Dim dd3 As Date = dd2.AddDays(1)   '付息日期
                           
                If ddr0 IsNot Nothing
                    e.DataRow("fxrq") = ddr0("dd3")
                    e.DataRow("qxrq") = ddr0("dd1")
                    e.DataRow("zxrq") = ddr0("dd2")
                End If
                
            End If
        End If
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/29 13:59:00 [只看该作者]

……
        Else
If e.DataRow("bz")=1 Then         
                Dim ddr0 As DataRow
                Dim max As Date
                max = e.DataTable.Compute("Max(zxrq)")
                ddr0 = DataTables("dk_lxb").Find("[cpbm] <> '" & e.DataRow("cpbm")  & "'","zxrq desc")               
                If ddr0 IsNot Nothing
                Dim dd4 As Date = ddr0("zxrq") '止息日期
                Dim dd1 As Date = dd4.AddDays(1)     '起息日期
                Dim dd2 As Date = dd4.addmonths(1)   '第二次止息日期
                Dim dd3 As Date = dd2.AddDays(1)   '付息日期
                    e.DataRow("fxrq") =  dd3
                    e.DataRow("qxrq") =  dd1 
                    e.DataRow("zxrq") = dd2 
                End If
                
            End If
……

 回到顶部
帅哥哟,离线,有人找我吗?
nbsugu_z
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:408 积分:3642 威望:0 精华:0 注册:2017/4/8 8:59:00
  发帖心情 Post By:2020/4/29 14:22:00 [只看该作者]

表dk_lxb 有以下列
   产品编号 (cpbm),  付息日期(fxrq), 起息日期(qxrq),止息日期(zxrq), 标志(bz)
当窗口按钮新增一行时,(bz)是在窗口新增行时默认填充的。要求当bz=1时执行如下代码
过程是:先查找不同产品编号中的上次zxrq最大的日期,找出后:
            新增行的qxrq=找出的zxrq加一天 (上次计算日止第二天重新开始计息开始日期)
            新增行的zxrq=找出的zxrq加一月  (上次计算日止加一个月结算期)
            新增行的fxrq=zxrq加一天 (利息计算止日第二天付款)
问题:我在当窗口按钮新增一行时,这三个日期出不来,是什么原因?

'以下增加一个月自动填写所有日期
Select Case e.DataCol.name
    Case "cpbm","bz"
        If e.DataRow.IsNull("cpbm") OrElse e.DataRow.IsNull("bz") Then
            e.DataRow("fxrq") = Nothing
            e.DataRow("qxrq") = Nothing
            e.DataRow("zxrq") = Nothing
        Else
                If e.DataRow("bz")= "1" Then         
                Dim ddr0 As DataRow
                Dim max As Date
                max = e.DataTable.Compute("Max(zxrq)")
                ddr0 = DataTables("dk_lxb").Find("[cpbm] <> '" & e.DataRow("cpbm")  & "'","zxrq desc")               
                If ddr0 IsNot Nothing
                Dim dd4 As Date = ddr0("zxrq") '止息日期
                Dim dd1 As Date = dd4.AddDays(1)     '起息日期
                Dim dd2 As Date = dd4.addmonths(1)   '第二次止息日期
                Dim dd3 As Date = dd2.AddDays(1)   '付息日期
                    e.DataRow("fxrq") =  dd3
                    e.DataRow("qxrq") =  dd1 
                    e.DataRow("zxrq") = dd2 
                End If                
            End If
        End If
End Select
 

老师。出不来
[此贴子已经被作者于2020/4/29 14:23:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/29 14:45:00 [只看该作者]

数据有没有加载?做个例子发上来看看

 回到顶部
帅哥哟,离线,有人找我吗?
nbsugu_z
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:408 积分:3642 威望:0 精华:0 注册:2017/4/8 8:59:00
  发帖心情 Post By:2020/4/29 15:12:00 [只看该作者]

ddr0 = DataTables("dk_lxb").Find("[cpbm] = '" & e.DataRow("cpbm")  & "'","zxrq desc")
修改成等于=可以了
但是在重置数据时,所有日期年份都变成 0001了
0001-05-29

而且日期输入下拉框都成了0001年了。电脑系统日期还是正确的

[此贴子已经被作者于2020/4/29 15:17:11编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/29 15:19:00 [只看该作者]

不是说“过程是:先查找不同产品编号中的上次zxrq最大的日期”?所谓我才改为<>

应该不是代码的问题,数据问题,是不是一些止息日期本来就没有年份,或者是空值?

 回到顶部