以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  登记日期是字符列 有没有办法直接把登记日期的字符列转换成日期列 实现一个选择时段的筛选  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175167)

--  作者:cnsjroom
--  发布时间:2022/2/22 17:08:00
--  登记日期是字符列 有没有办法直接把登记日期的字符列转换成日期列 实现一个选择时段的筛选

表列事项代码

Select Case e.DataCol.Name
    Case "登记日期"
        e.DataRow("登记日期")=cdate(e.DataRow("登记日期"))
End Select

 

当登记日期等于 20220211165467 运行时提示:

从字符串“20220211165467”到类型“Date”的转换无效。

 

登记日期是字符列   有没有办法直接把登记日期的字符列转换成日期列 实现一个选择时段的筛选

Dim dt1 As Date =Forms("文件登记").Controls("DateTimePicker1").Value
Dim dt2 As Date =Forms("文件登记").Controls("DateTimePicker2").Value
Dim Filter As String
Filter = "登记日期 >= #" & dt1 & "# And 登记日期 <= #" & dt2 & "#"
Tables("文件登记").Filter = Filter

[此贴子已经被作者于2022/2/22 17:08:57编辑过]

--  作者:有点蓝
--  发布时间:2022/2/22 17:17:00
--  
没有办法,建议另外建一个日期列,然后做一下转换

Dim s As String= "20220211165457"
s = s.insert(12,":").insert(10,":").insert(8," ").insert(6,"-").insert(4,"-")
Output.Show(s)
Dim d As Date = cdate(s)
Output.Show(d)

--  作者:cnsjroom
--  发布时间:2022/2/22 17:31:00
--  回复:(有点蓝)没有办法,建议另外建一个日期列,然...

Select Case e.DataCol.Name
    Case "第一列"
        Dim s As String= e.DataRow("第一列")
        s = s.insert(12,":").insert(10,":").insert(8," ").insert(6,"-").insert(4,"-")
        e.DataRow("第二列")=cdate(s)
End Select

 

第一列是字符  第二列是日期时间  结果还是出现一楼问题


--  作者:有点蓝
--  发布时间:2022/2/22 17:36:00
--  
20220211165467不是合法的日期值,如果最后的67是秒,有67秒这玩意吗
--  作者:cnsjroom
--  发布时间:2022/2/23 0:56:00
--  回复:(有点蓝)20220211165467不是合法的日期值,如...

字符是如下格式 也不行


图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
且时间列已经更改位日期时间属性
--  作者:有点蓝
--  发布时间:2022/2/23 8:46:00
--  
肯定也不是合法的日期值,看提示2前面有一个空格