以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  不清楚代码问题,请教  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34312)

--  作者:sxqq123
--  发布时间:2013/6/5 9:11:00
--  不清楚代码问题,请教


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

 

分解入库_DataColChanged

 

If e.DataCol.Name = "单价" OrElse e.DataCol.Name = "数量" Then

    e.DataRow("金额") = e.DataRow("单价") * e.DataRow("数量")

End If

 

\'If e.DataCol.Name = "物资名称" Then \'

\'If e.NewValue Is Nothing Then

\'e.DataRow("物资类别") = Nothing

\'Else

\'Dim dr As DataRow

\'dr = DataTables("分解数据").Find("[物资名称] = \'" & e.NewValue & "\'")

\'If dr IsNot Nothing Then

\'e.DataRow("物资类别") = dr("物资类别")

\'End If

\'End If

\'End If

\'

Dim dt As Date = e.DataRow("入库日期")

If dt.Day < 26 Then

    dt = dt.AddMonths(-1)

End If

Dim dt1 As Date = New Date(dt.Year,dt.Month ,26)

Dim dt2 As Date = dt1.AddMonths(1).AddDays(-1)

Dim Filter As String

Filter = "入库日期 >= #" & dt1 & "# And 入库日期 <= #" & dt2 & "#"

Tables("分解入库").Filter = Filter


--  作者:Bin
--  发布时间:2013/6/5 9:13:00
--  
上例子.你这个是你值有问题.非法.
--  作者:狐狸爸爸
--  发布时间:2013/6/5 9:17:00
--  

你的代码问题多多,在DataColchanged筛选,也不判断列名,也不判断是否输入了值。

估计是没有输入入库日期造成的,判断输入了入库日期再执行这些代码吧:

 

If e.DataCol.Name = "单价" OrElse e.DataCol.Name = "数量" Then
    e.DataRow("金额") = e.DataRow("单价") * e.DataRow("数量")
End If
If e.DataCol.name = "入库日期" Then
    If e.DataRow.IsNull("入库日期") = False
        Dim dt As Date = e.DataRow("入库日期")
        If dt.Day < 26 Then
            dt = dt.AddMonths(-1)
        End If
        Dim dt1 As Date = New Date(dt.Year,dt.Month ,26)
        Dim dt2 As Date = dt1.AddMonths(1).AddDays(-1)
        Dim Filter As String
        Filter = "入库日期 >= #" & dt1 & "# And 入库日期 <= #" & dt2 & "#"
        Tables("分解入库").Filter = Filter
    End If
End If