以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 对于造型说明无效的字符值 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161243) |
-- 作者:newsun2k -- 发布时间:2021/3/10 16:52:00 -- 对于造型说明无效的字符值 如题,报上述错误。 查了一下论坛,知道是日期格式的问题。 那有什么办法在代码里面怎么处理一下,避免这种错误。 老要用户改日期,好像也不太友好。
|
-- 作者:有点蓝 -- 发布时间:2021/3/10 16:57:00 -- 参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=93429 |
-- 作者:newsun2k -- 发布时间:2021/6/2 16:06:00 -- Dim cd As System.Globalization.DateTimeFormatInfo = System.Globalization.DateTimeFormatInfo.CurrentInfo Dim DateInfo As System.Reflection.FieldInfo = cd.Gettype.GetField("generalLongTimePattern", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Instance) If DateInfo IsNot Nothing Then DateInfo.SetValue(cd, "yyyy-MM-dd HH:mm:ss") End If 代码写入项目BeforeOpenProject事件中 Dim d As Date = Date.Today Dim s As String = CStr(d) Dim l As Integer = s.Length If l > 10 Then \'判断系统日期是否符合标准 Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\International","sShortDate","yyyy-MM-dd") e.Cancel = True e.HideSplashForm = True MessageBox.Show("程序将自动关闭,以校对系统日期格式!" & vbcrlf & "而后请重新启动程序","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) Syscmd.Project.Exit() End If |
-- 作者:newsun2k -- 发布时间:2021/6/2 16:07:00 -- 大哥,两个代码分别放在before open 或after open 系统里面也设置了,就是不行啊 怎么办?
|
-- 作者:有点蓝 -- 发布时间:2021/6/2 16:08:00 -- 那就不是系统日期格式的问题了。应该是导入了不合法的日期数据 |
-- 作者:newsun2k -- 发布时间:2021/6/9 17:43:00 -- 在beforesaverow中,加下面的代码,总算解决了。 效率下降了很多。头疼。 For Each dc As DataCol In e.DataTable.DataCols If dc.IsDate Then strD = e.DataRow(dc.name) If Date.TryParse(strD,d) Then \'如果转换成功 e.DataRow(dc.name) = format(d,"yyyy-MM-dd") Else e.DataRow(dc.name) = Nothing End If End If Next |