你的代码问题多多,在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