以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 表事件与日期计算 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=157226) |
-- 作者:朱女士 -- 发布时间:2020/10/9 9:20:00 -- 表事件与日期计算 老师您好!我有两个问题请教您: 1、点击开票表“项目号”列,重置列时出现:错误信息:Foxtable 版本:2020.5.29.8 错误所在事件:表,开票表, DataColChanged 详细错误信息: 调用的目标发生了异常。 从字符串“订单数量”到类型“Integer”的转换无效。 输入字符串的格式不正确。 我的开票表的订单数量设置为双精度小数,DataColChanged代码: Select Case e.DataCol.Name Case "项目号","订单数量","订单重量","订单含税额","开票数量","开票重量","开票金额" Dim dr As DataRow Dim mr As DataRow = e.DataRow Dim drs As List(of DataRow) dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [项目号] = \'" & mr("项目号") & "\'", "[_SortKey] Desc") If dr Is Nothing Then mr("结余数量") = mr("订单数量") - mr("开票数量") mr("结余重量") = mr("订单重量") - mr("开票重量") mr("结余金额") = mr("订单含税额") - mr("开票金额") dr = mr End If drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [项目号] = \'" & dr("项目号") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 drs(i)("结余数量") = drs(i-1)("结余数量") + drs("订单数量")-drs(i)("开票数量") drs(i)("结余重量") = drs(i-1)("结余重量") + drs("订单重量")-drs(i)("开票重量") drs(i)("结余金额") = drs(i-1)("结余金额") + drs("订单含税额")-drs(i)("开票金额") Next If e.DataCol.Name = "项目号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And 项目号] = \'" & e.OldValue & "\'", "[_SortKey] Desc") If dr Is Nothing Then dr = e.DataTable.Find("[项目号] = \'" & e.OldValue & "\'", "[_SortKey]") If dr IsNot Nothing Then dr("结余数量") = dr("订单数量") - dr("开票数量") dr("结余重量") = dr("订单重量") - dr("开票重量") dr("结余金额") = dr("订单含税额") - dr("开票金额") End If End If If dr IsNot Nothing Then drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [项目号] = \'" & dr("项目号") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 drs(i)("结余数量") = drs(i-1)("结余数量") + drs("订单数量")-drs(i)("开票数量") drs(i)("结余重量") = drs(i-1)("结余重量") + drs("订单重量")-drs(i)("开票重量") drs(i)("结余金额") = drs(i-1)("结余金额") + drs("订单含税额")-drs(i)("开票金额") Next End If End If End Select 是哪里的问题呢?请指教!
2、我有一个表,想对瑞博公司,在开票日期开出60天后,为应结款日期,我的下面代码不执行。 If e.DataCol.name="开票日期" Then Dim dr As DataRow If dr("客户")="瑞博"
e.DataRow("应结款日期")=e.DataRow("开票日期").adddays(60) End If End If 对abc公司是开票后120天后的每月4号结款,如果开票日期加上120天后超过4号了,就顺延到下月4号结款。这个怎么实现? <!--EndFragment--> <!--EndFragment--> |
-- 作者:有点蓝 -- 发布时间:2020/10/9 9:42:00 -- 1、试试 If e.DataCol.Name = "项目号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then 改为 If e.DataCol.Name = "项目号" Then If e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then \'其它代码 end if end if 或者自行跟踪一下看是那一句代码有问题,调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm 2、 If e.DataCol.name="开piao日期" orelse e.DataCol.name="客户"Then If e.DataRow("客户")="瑞博"
e.DataRow("应结款日期")=e.DataRow("开piao日期").adddays(60) End If End If |
-- 作者:朱女士 -- 发布时间:2020/10/9 10:38:00 -- 老师您好! 上面第二个问题的第二层代码客户=“abc” 时,abc公司是开票后120天后的每月4号结款,如果开票日期加上120天后超过4号了,就顺延到下月4号结款。我写的出错了:.NET Framework 版本:4.0.30319.42000 我的代码: If e.DataCol.name="开票日期" OrElse e.DataCol.name="客户"Then If e.DataRow("客户")="博瑞" e.DataRow("应结款日期")=e.DataRow("开票日期").adddays(60) Dim dt As Date If d>4 Dim dt2 As New Date(y, m, 4) e.DataRow("应结款日期")=dt2 End If 谢谢! |
-- 作者:有点蓝 -- 发布时间:2020/10/9 11:07:00 -- If e.DataCol.name="开piao日期" OrElse e.DataCol.name="客户"Then If e.DataRow("客户")="博瑞" e.DataRow("应结款日期")=e.DataRow("开piao日期").adddays(60) ElseIf e.DataRow("客户")="abc" Dim dt As Date Dim dt0 As Date dt0=e.DataRow("开piao日期") dt=e.DataRow("开piao日期").adddays(120) If dt.Day > 4 Then dt = dt.AddMonths(1) dt = new Date(dt.Year,dt.Month,4) End If e.DataRow("应结款日期")=dt End If End If
|