以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 该字符串未被识别为有效的DateTime (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=44480) |
-- 作者:tomcat521 -- 发布时间:2014/1/1 19:19:00 -- 该字符串未被识别为有效的DateTime 做了一个筛选窗口: 其中【设备型号】是ComboBox控件; 【设备序列号】是TextBox控件; 【起始日期】和【截止日期】是DateTimePicker控件; 查询代码: Dim sbxh As WinForm.ComboBox = e.Form.Controls("设备型号") Dim sbxlh As WinForm.TextBox = e.Form.Controls("设备序列号") Dim StartDate As WinForm.DateTimePicker = e.Form.Controls("起始日期") Dim EndDate As WinForm.DateTimePicker = e.Form.Controls("截止日期") Tables("安装").Filter = "设备型号 Like \'*" & sbxh.Text & "*\' And 设备序列号 Like \'*" & sbxlh.Text & "*\' And 装机时间 >= #"& StartDate.Value &"# And 装机时间 <= #"& EndDate.Value &"# " 必须同时输入【起始日期】和【截止日期】才能筛选,否则就提示: 该字符串未被识别为有效的DateTime .NET Framework 版本:2.0.50727.3649 Foxtable 版本:2013.10.14.1 错误所在事件: 详细错误信息: 该字符串未被识别为有效的 DateTime。 |
-- 作者:tomcat521 -- 发布时间:2014/1/1 19:20:00 -- 筛选窗口截图: |
-- 作者:程兴刚 -- 发布时间:2014/1/1 19:45:00 -- Dim sbxh As WinForm.ComboBox = e.Form.Controls("设备型号") Dim sbxlh As WinForm.TextBox = e.Form.Controls("设备序列号") Dim StartDate As Date = = #1/1/1900# If e.Form.Controls("起始日期").Value <> Nothing StartDate = e.Form.Controls("起始日期").Value End If Dim EndDate As Date = #12/30/2099# If e.Form.Controls("截止日期").Value <> Nothing EndDate = e.Form.Controls("截止日期").Value End If Tables("安装").Filter = "设备型号 Like \'*" & sbxh.Text & "*\' And 设备序列号 Like \'*" & sbxlh.Text & "*\' And 装机时间 >= #" & StartDate & "# And 装机时间 <= #" & EndDate & "# "
|
-- 作者:tomcat521 -- 发布时间:2014/1/1 19:54:00 -- 谢谢兴刚老师! 我自己刚才改成这样也可以了(分成日期是否为空,就是麻烦点): Dim sbxh As WinForm.ComboBox = e.Form.Controls("设备型号") Dim sbxlh As WinForm.TextBox = e.Form.Controls("设备序列号") Dim StartDate As WinForm.DateTimePicker = e.Form.Controls("起始日期") Dim EndDate As WinForm.DateTimePicker = e.Form.Controls("截止日期") If StartDate.Value <> Nothing And EndDate.Value <> Nothing Then Tables("安装").Filter = "设备型号 Like \'*" & sbxh.Text & "*\' And 设备序列号 Like \'*" & sbxlh.Text & "*\' And 装机时间 >= #"& StartDate.Value &"# And 装机时间 <= #"& EndDate.Value &"# " Tables("安装").Sort = "设备序列号" End If If StartDate.Value = Nothing And EndDate.Value = Nothing Then Tables("安装").Filter = "设备型号 Like \'*" & sbxh.Text & "*\' And 设备序列号 Like \'*" & sbxlh.Text & "*\'" Tables("安装").Sort = "设备序列号" End If |
-- 作者:tomcat521 -- 发布时间:2014/1/1 20:00:00 -- 刚才又发现了一个新的问题: 设备型号包括 BR-526 BR-526-6 BR-526-24 筛选时,选择BR-526-24或者BR-526-6,都是精确筛选,如果选择BR-526,则BR-526-24和BR-526-6也会筛出来。
|
-- 作者:有点甜 -- 发布时间:2014/1/1 20:05:00 -- 呃,因为你设置的是模糊筛选,用了Like,前后有*,所以会匹配 |
-- 作者:程兴刚 -- 发布时间:2014/1/1 20:36:00 -- 以下是引用tomcat521在2014-1-1 19:54:00的发言:
谢谢兴刚老师! 我自己刚才改成这样也可以了(分成日期是否为空,就是麻烦点):
Dim sbxh As WinForm.ComboBox = e.Form.Controls("设备型号")
Dim sbxlh As WinForm.TextBox = e.Form.Controls("设备序列号")
Dim StartDate As WinForm.DateTimePicker = e.Form.Controls("起始日期")
Dim EndDate As WinForm.DateTimePicker = e.Form.Controls("截止日期")
If StartDate.Value <> Nothing And EndDate.Value <> Nothing Then
Tables("安装").Filter = "设备型号 Like \'*" & sbxh.Text & "*\' And 设备序列号 Like \'*" & sbxlh.Text & "*\' And 装机时间 >= #"& StartDate.Value &"# And 装机时间 <= #"& EndDate.Value &"# "
Tables("安装").Sort = "设备序列号"
End If
If StartDate.Value = Nothing And EndDate.Value = Nothing Then
Tables("安装").Filter = "设备型号 Like \'*" & sbxh.Text & "*\' And 设备序列号 Like \'*" & sbxlh.Text & "*\'"
Tables("安装").Sort = "设备序列号"
End If
您这样行吗?至少还有两个判断!一个为空一个不为空还有两种组合,绝对不如我的方法简洁! |
-- 作者:tomcat521 -- 发布时间:2014/1/2 20:00:00 -- 醍醐灌顶!姜还是拉的啦啊! |
-- 作者:tomcat521 -- 发布时间:2014/1/2 20:00:00 -- 老 |
-- 作者:tomcat521 -- 发布时间:2014/1/2 20:05:00 -- 姜还是老的辣! |