以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  突发异常  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=114181)

--  作者:石四
--  发布时间:2018/1/31 9:47:00
--  突发异常

今天公司里所有电脑打开系统某个窗口时都弹出下面提示,导致这个窗口不能正常运行.其他窗口有些也涉及日期格式但正常.

Year, Month, and Day parameters describe an un-representable DateTime.

 

有遇到过相同问题的吗?怎么破?


--  作者:有点甜
--  发布时间:2018/1/31 10:00:00
--  

你窗口afterLoad事件写了什么代码?窗口有没有sql形式表格?

 

有没有转换成日期的语句?一般是空值形式的日期值导致的。

 

 


--  作者:石四
--  发布时间:2018/1/31 10:10:00
--  

Dim y As Integer = Date.Today.Year
Dim m As Integer = Date.Today.Month
Dim d As Integer = Date.Today.Day
Dim mt1,mt2 As Date

If m > 2 Then
    mt1 = New Date(y, m - 2, d)
    mt2 = New Date(y, m, d)
Else
    mt1 = New Date(y - 1, 10 + m, d)
    mt2 = New Date(y, m, d)
End If

 

貌似是上面那段代码出问题,我直接改成

mt1 = New Date(2018, 1, 1)
mt2 = New Date(2018, 1, 31)

测试就能通过.但是之前用那段代码一直正常的呀.


--  作者:石四
--  发布时间:2018/1/31 10:17:00
--  

Dim y As Integer = Date.Today.Year
Dim m As Integer = Date.Today.Month
Dim d As Integer = Date.Today.Day
Dim mt1,mt2 As Date
Dim cmd As New SQLCommand
cmd.C
Dim dt As DataTable

\'If m > 2 Then
 \'   mt1 = New Date(y, m - 2, d)
  \'  mt2 = New Date(y, m, d) \'获取本月的最后一天
\'Else
 \'   mt1 = New Date(y - 1, 10 + m, d)
  \'  mt2 = New Date(y, m, d) \'获取本月的最后一天
\'End If
 mt1 = New Date(2018, 1, 1)
    mt2 = New Date(2018, 1, 31) \'获取本月的最后一天
cmd.CommandText = "SELECT DISTINCT 客户名称,收货仓,司机,装卸,车号 Fro m {销售明细} WHERE 日期 >= #" & mt1 & "# And 日期 <= #" & mt2 & "#"
dt = cmd.ExecuteReader()

完整的代码


--  作者:有点甜
--  发布时间:2018/1/31 10:36:00
--  

日计算错误呗,每个月的最后一天都可能是不同的。28、29、30、31都有可能。如果要用你原来的逻辑,就这样写


Dim mt1,mt2 As Date

mt1 = Date.Today.AddMonths(-2)
mt2 = Date.today


--  作者:石四
--  发布时间:2018/1/31 10:45:00
--  
以下是引用有点甜在2018/1/31 10:36:00的发言:

日计算错误呗,每个月的最后一天都可能是不同的。28、29、30、31都有可能。如果要用你原来的逻辑,就这样写


Dim mt1,mt2 As Date

mt1 = Date.Today.AddMonths(-2)
mt2 = Date.today

标注没有删除,实际是取当天之前三个月时间段.


--  作者:石四
--  发布时间:2018/1/31 10:47:00
--  
哦,11月没有31日.
--  作者:有点甜
--  发布时间:2018/1/31 10:48:00
--  

自行学习日期变量的加减

 

http://www.foxtable.com/webhelp/scr/1337.htm

 


--  作者:狐狸爸爸
--  发布时间:2018/1/31 10:51:00
--  
1、去控制面板修改日期时间格式。

2、或者:

cmd.CommandText = "SELECT DISTINCT 客户名称,收货仓,司机,装卸,车号 Fro m {销售明细} WHERE 日期 >= #" & mt1 & "# And 日期 <= #" & mt2 & "#"

改为:

cmd.CommandText = "SELECT DISTINCT 客户名称,收货仓,司机,装卸,车号 Fro m {销售明细} WHERE 日期 >= #" & Format(mt1,"MM/dd/yyyy") & "# And 日期 <= #" & Format(mt2,"MM/dd/yyyy") &  "#"
[此贴子已经被作者于2018/1/31 10:51:39编辑过]

--  作者:石四
--  发布时间:2018/1/31 10:53:00
--  
以下是引用有点甜在2018/1/31 10:36:00的发言:

日计算错误呗,每个月的最后一天都可能是不同的。28、29、30、31都有可能。如果要用你原来的逻辑,就这样写


Dim mt1,mt2 As Date

mt1 = Date.Today.AddMonths(-2)
mt2 = Date.today

三个月即90天前是这样用吧?

Date.Today.AddDays(-90))