以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 声明日期 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173048) |
|
-- 作者:爱相随 -- 发布时间:2021/11/12 11:49:00 -- 声明日期 老师,我在表A的DataColChanged事件中要做如下声明,请问该如何写代码,谢谢!! Dim dt3 As Date = DataTables("pjmxb").DataRow("出票日期") Dim dt4 As Date = DataTables("pjmxb").DataRow("到期日期") |
|
-- 作者:有点蓝 -- 发布时间:2021/11/12 12:10:00 -- |
|
-- 作者:爱相随 -- 发布时间:2021/11/12 13:40:00 -- 老师,问题是这样的: 表A是票据汇总表,有”出票银行“”出票人““查询日期”“出票金额““本日到期”“本周到期”“本月到期”“本季到期”“半年到期”“一年到期”等列 表B是出票明细表,有”出票银行“”出票人“”票据号“”出票金额“”出票日期“”到期日期“”收票人“等列,因本表涉及两个以上的日期列,因此日期列的名称不可能是唯一的。 现在在表A汇总代码时出现以下问题: 1、在表A的出票金额的查询日期对应表B的出票日期;而“本日到期”“本周到期”“本月到期”“本季到期”“半年到期”“一年到期”等列对应表B的“到期日期”列。这个时间代码怎么对设置对应?? 下面的代码有错误,请老师指导,谢谢!! Dim y As Integer = Date.Today.Year Dim q As Integer = (Date.Today.Month - 1) \\ 3 + 1 \'计算现在是第几个季度 Dim w As Integer = Date.Today.DayOfWeek \'算出今天是星期几 Dim dt1 As Date = Date.Today.AddDays(-w) \'获取本周的第一天 Dim dt2 As Date = Date.Today.AddDays(6 - w) \'获取本周的最后一天 Dim dt5 As New Date(y, 3 * (q - 1) + 1, 1) \'获取本季度的第一天 Dim dt6 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) \'获取本季度的最后一天 Dim dt7 As Date = E.DataRow("RQ") If e.DataCol.Name = "出票人" Then Dim filter1 As String = "出票银行 = \'" & e.DataRow("出票银行") & "\' And 出票人 = \'" & e.DataRow("出票人") & "\'" e.DataRow("开票金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [出票日期] <= \'"e.DataRow("rq")"\')/10000’这里的[出票日期]是表B的列,而\'"e.DataRow("rq")"\'属于表A的 e.DataRow("到期需兑付金额") = DataTables("pjmxb").Compute("sum(到期需兑付金额)",filter1 & "And [出票日期] <= & e.DataRow("rq") & " )/10000 ’这里的[出票日期]是表B的列,而\'"e.DataRow("rq")"\'属于表A的 e.DataRow("已兑付金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [兑付] = true" ) /10000 e.DataRow("本日到期金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] = & e.DataRow("rq") & " )/10000’这里的[到期日期]是表B的列,而\'"e.DataRow("rq")"\'属于表A的 e.DataRow("本周到期金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] <= & e.DataRow("rq") & " )/10000’这里的[到期日期]是表B的列,而\'"e.DataRow("rq")"\'属于表A的 End If |
|
-- 作者:有点蓝 -- 发布时间:2021/11/12 13:48:00 -- e.DataRow("本日到期金额") = DataTables("pjmxb").Compute("sum(开piao金额)",filter1 & "And [到期日期] = #" & Date.Today &"# " )/10000’这里的[到期日期]是表B的列,而\'"e.DataRow("rq")"\'属于表A的 e.DataRow("本周到期金额") = DataTables("pjmxb").Compute("sum(开piao金额)",filter1 & "And [到期日期] >= #" & dt1 &"# and [到期日期] <= #" & dt2 &"#" )/10000’这里的[到期日期]是表B的列,而\'"e.DataRow("rq")"\'属于表A的
|
|
-- 作者:爱相随 -- 发布时间:2021/11/12 13:57:00 -- 老师,表A的“本日到期”的本日是指表A输入的“查询日期”的日期,并不是系统的当日日当期,比如输入的是2021年10月25日,本日到期金额就是10月25日到期的金额,而不是电脑系统的今天2021年11月12日。 [此贴子已经被作者于2021/11/12 13:58:35编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2021/11/12 14:06:00 --
|
|
-- 作者:爱相随 -- 发布时间:2021/11/12 15:24:00 -- 老师,如下代码倒可以取数了,但是在运行出现错误 Dim y As Integer = E.DataRow("RQ").Year Dim m As Integer = E.DataRow("RQ").Month Dim q As Integer = (E.DataRow("RQ").Month - 1) \\ 3 + 1 \'计算现在是第几个季度 Dim w As Integer = E.DataRow("RQ").DayOfWeek \'算出今天是星期几 Dim dt1 As Date = E.DataRow("RQ").AddDays(-w) \'获取本周的第一天 Dim dt2 As Date = E.DataRow("RQ").AddDays(6 - w) \'获取本周的最后一天 Dim dt3 As New Date(y, m, 1) Dim dt4 As New Date(y, m, Date.DaysInMonth(y, m)) \'获取本月的最后一天 Dim dt5 As New Date(y, 3 * (q - 1) + 1, 1) \'获取本季度的第一天 Dim dt6 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) \'获取本季度的最后一天 Dim dt7 As Date = E.DataRow("RQ") Dim dt8 As Date = E.DataRow("RQ").AddMonths(3) \'加上3个月 Dim dt9 As Date = E.DataRow("RQ").AddMonths(6) \'加上6个月 Dim dt10 As Date = E.DataRow("RQ").AddMonths(12) \'加上12个月 Dim dt11 As Date = E.DataRow("RQ").AddMonths(24) \'加上24个月 If e.DataCol.Name = "出票人" Then Dim filter1 As String = "出票银行 = \'" & e.DataRow("出票银行") & "\' And 出票人 = \'" & e.DataRow("出票人") & "\'" e.DataRow("开票金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [出票日期] <= #" & dt7 & "# ")/10000 e.DataRow("到期需兑付金额") = DataTables("pjmxb").Compute("sum(到期需兑付金额)",filter1 & "And [出票日期] <= #" & dt7 & "#" )/10000 e.DataRow("已兑付金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [兑付] = true" ) /10000 e.DataRow("本日到期金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] = #" & dt7 & "# ")/10000 e.DataRow("本日以前") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] >= #" & dt1 & "# And [到期日期] < #" & dt7 &"#" )/10000 e.DataRow("本周内到期金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] >= #" & dt7 & "# And [到期日期] <= #" & dt2 &"#" )/10000 e.DataRow("本日以前1") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] >= #" & dt3 & "# And [到期日期] < #" & dt7 &"#" )/10000 e.DataRow("本月内到期金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] >= #" & dt7 & "# And [到期日期] <= #" & dt4 &"#" )/10000 e.DataRow("本日以前2") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] >= #" & dt5 & "# And [到期日期] < #" & dt7 &"#" )/10000 e.DataRow("本季度内到期金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] >= #" & dt7 & "# And [到期日期] <= #" & dt6 &"#" )/10000 e.DataRow("三个月内到期金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] > #" & dt7 & "# And [到期日期] <= #" & dt8 &"#" )/10000 e.DataRow("六个月内到期金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] > #" & dt7 & "# And [到期日期] <= #" & dt9 &"#" )/10000 e.DataRow("一年内到期金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] > #" & dt7 & "# And [到期日期] <= #" & dt10 &"#" )/10000 e.DataRow("二年内到期金额") = DataTables("pjmxb").Compute("sum(开票金额)",filter1 & "And [到期日期] > #" & dt7 & "# And [到期日期] <= #" & dt11 &"#" )/10000 End If 运行如下代码: For Each r As Row In Tables("pjmxb").Rows DataTables("pjtzhzb").datarows.clear Dim f As New Filler f.SourceTable = DataTables("pjmxb") \'指定数据来源 f.SourceCols = "出票行,出票银行,出票人" \'指定数据来源列 f.DataTable = DataTables("pjtzhzb") \'指定数据接收表 f.DataCols = "出票行,出票银行,出票人" \'指定数据接收列 f.ExcludeExistValue = True f.Fill() \'填充数据 Next MainTable = Tables("pjtzhzb") 提示如下运行错误: .NET Framework 版本:2.0.50727.8806 Foxtable 版本:2017.6.12.1 错误所在事件:表,pjtzhzb,DataColChanged 详细错误信息: 调用的目标发生了异常。 添加或减去的值产生无法表示的 DateTime。 参数名: value [此贴子已经被作者于2021/11/12 15:38:08编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2021/11/12 15:42:00 -- 调试看是哪一句代码出错,应该是季度的计算值出错了 [此贴子已经被作者于2021/11/12 15:42:56编辑过]
|
|
-- 作者:爱相随 -- 发布时间:2021/11/12 16:51:00 -- MessageBox.Show(0) Dim y As Integer = E.DataRow("RQ").Year Dim m As Integer = E.DataRow("RQ").Month MessageBox.Show(1) Dim q As Integer = (E.DataRow("RQ").Month - 1) \\ 3 + 1 \'计算现在是第几个季度 Dim w As Integer = E.DataRow("RQ").DayOfWeek \'算出今天是星期几 Dim dt1 As Date = E.DataRow("RQ").AddDays(-w) \'获取本周的第一天 Dim dt2 As Date = E.DataRow("RQ").AddDays(6 - w) \'获取本周的最后一天 Dim dt3 As New Date(y, m, 1) Dim dt4 As New Date(y, m, Date.DaysInMonth(y, m)) \'获取本月的最后一天 MessageBox.Show(2) Dim dt5 As New Date(y, 3 * (q - 1) + 1, 1) \'获取本季度的第一天 Dim dt6 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) \'获取本季度的最后一天 MessageBox.Show(3) |
|
-- 作者:爱相随 -- 发布时间:2021/11/12 16:59:00 -- MessageBox.Show(0) Dim y As Integer = E.DataRow("RQ").Year Dim m As Integer = E.DataRow("RQ").Month MessageBox.Show(1) Dim q As Integer = (E.DataRow("RQ").Month - 1) \\ 3 + 1 \'计算现在是第几个季度 Dim w As Integer = E.DataRow("RQ").DayOfWeek \'算出今天是星期几 MessageBox.Show(2) Dim dt1 As Date = E.DataRow("RQ").AddDays(-w) \'获取本周的第一天 Dim dt2 As Date = E.DataRow("RQ").AddDays(6 - w) \'获取本周的最后一天 MessageBox.Show(3) Dim dt3 As New Date(y, m, 1) Dim dt4 As New Date(y, m, Date.DaysInMonth(y, m)) \'获取本月的最后一天 Dim dt5 As New Date(y, 3 * (q - 1) + 1, 1) \'获取本季度的第一天 Dim dt6 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) \'获取本季度的最后一天 这样提示0、1、2有错。。。
|