Foxtable(狐表)用户栏目专家坐堂 → 求助,比较复杂的日期查询,狐爸来帮忙啊!


  共有8512人关注过本帖树形打印复制链接

主题:求助,比较复杂的日期查询,狐爸来帮忙啊!

帅哥哟,离线,有人找我吗?
sadfox
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:1864 威望:0 精华:0 注册:2013/3/16 21:31:00
求助,比较复杂的日期查询,狐爸来帮忙啊!  发帖心情 Post By:2013/3/23 18:24:00 [只看该作者]

 

如图,下拉文本框中的选项对应表中的列。

1、需要不管是只输入年或者输入年和月,或者完整输入时间都能查询到对应列的日期.

2、同理。再增加个时间段的查询栏目,如1995-2013

3、查询没有时能出现提示,没有符合条件的数据。

只能求大神帮忙了,没相识的案列,希望大神能把代码注释写上,好学习一下。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:7,(2).table


图片点击可在新窗口打开查看此主题相关图片如下:674.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-3-24 14:00:41编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
sadfox
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:1864 威望:0 精华:0 注册:2013/3/16 21:31:00
  发帖心情 Post By:2013/3/23 20:43:00 [只看该作者]

不能实现吗,如果可以,能不能再加个时间段的查询!

 回到顶部
帅哥哟,离线,有人找我吗?
sadfox
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:1864 威望:0 精华:0 注册:2013/3/16 21:31:00
  发帖心情 Post By:2013/3/23 20:47:00 [只看该作者]

郁闷是,为了搞这个,把项目都搞崩溃了,现在按ctrl都启动不了啦!

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/3/23 21:32:00 [只看该作者]

Dim t As Table = Tables("资料查询_资料查询")
Dim cmbtxt = e.Form.Controls("ComboBox1").Text
t.Filter = (cmbtxt & " = #" & e.Form.Controls("TextBox1").Text & "-" & e.Form.Controls("TextBox2").Text & "-" _
& e.Form.Controls("TextBox3").Text & "#")

 回到顶部
帅哥哟,离线,有人找我吗?
sadfox
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:1864 威望:0 精华:0 注册:2013/3/16 21:31:00
  发帖心情 Post By:2013/3/23 21:49:00 [只看该作者]

以下是引用lsy在2013-3-23 21:32:00的发言:
Dim t As Table = Tables("资料查询_资料查询")
Dim cmbtxt = e.Form.Controls("ComboBox1").Text
t.Filter = (cmbtxt & " = #" & e.Form.Controls("TextBox1").Text & "-" & e.Form.Controls("TextBox2").Text & "-" _
& e.Form.Controls("TextBox3").Text & "#")

引用,你这个只能输入完整的日期才能查询,如果只输入年份或者只输入年和月份就不能查询了


 回到顶部
帅哥哟,离线,有人找我吗?
e-png
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2013/3/23 22:40:00 [只看该作者]

这样呢:?


Dim cnl As WinForm.ComboBox = Forms("资料查询").Controls("ComboBox1")
Dim tx1 As WinForm.TextBox = Forms("资料查询").Controls("TextBox1")
Dim tx2 As WinForm.TextBox = Forms("资料查询").Controls("TextBox2")
Dim tx3 As WinForm.TextBox = Forms("资料查询").Controls("TextBox3")
Dim t As Table = Tables("资料查询_资料查询")
Dim y As String
If tx2.text = ""
    y = "12"
Else
    y = tx2.text
End If
Dim yf As String = "4,6,9,11,04,06,09,11"
Dim dd,dd1 As String
If yf.contains(tx2.text) And tx1.text IsNot Nothing
    dd  = "30"
ElseIf Date.IsLeapYear(tx1.text) = True
    dd = "29"
ElseIf tx2.text = "2"
    dd = "28"
Else
    dd = "31"
End If
If tx3.text = ""
    dd1 = "1"
Else
    dd1 = tx3.text
End If

Dim cs As String = cnl.text &  " Like " & "'" & tx1.text & "'"

If cnl.text > "" And tx1.text > "" And tx2.text > "" And tx3.text > ""
    t.Filter = (cnl.text & " = #" & tx1.text & "-" & tx2.Text & "-" & tx3.Text & "#")

Else
    If cnl.text <> "" And tx1.text <> ""
        t.filter = " " & cnl.text & " > # " & dd1 & "/" & _
        y & "/" & tx1.text & "#  And  " & cnl.text & " < #" & _
        y & "/" & dd & "/" & tx1.text & "# "
    Else
        msgbox("请确认某日期或年份已经输入了")
    End If
End If

[此贴子已经被作者于2013-3-23 23:21:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
sadfox
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:1864 威望:0 精华:0 注册:2013/3/16 21:31:00
  发帖心情 Post By:2013/3/23 23:38:00 [只看该作者]

图片点击可在新窗口打开查看
e-png你的代码测试了下,只输入年份查可以了,但是在同时输入年份和月份的时候,月份时间没起作用,还是按年份查的
比如,我要查2013年9月退休人员,但是查询的结果却是2013年所有退休人员
[此贴子已经被作者于2013-3-23 23:39:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/3/23 23:46:00 [只看该作者]

Dim t As Table = Tables("资料查询_资料查询")
Dim cmbtxt = e.Form.Controls("ComboBox1").Text
If e.Form.Controls("TextBox3").Text = "" Then
    t.Filter = cmbtxt & " > = #" & e.Form.Controls("TextBox1").Text & "-" & e.Form.Controls("TextBox2").Text & _
    "-01# And " & cmbtxt & " < = #" & e.Form.Controls("TextBox1").Text & "-" & e.Form.Controls("TextBox2").Text & "-28#"
ElseIf e.Form.Controls("TextBox2").Text = "" Then
    t.Filter = cmbtxt & " > = #" & e.Form.Controls("TextBox1").Text & "-01# And " & cmbtxt & " < = #" & e.Form.Controls("TextBox1").Text & "-12#"   
ElseIf e.Form.Controls("TextBox1").Text = "" Then
    t.Filter = ""
End If

 

只做了单一文本框为空的判断,而且没算完大小月、2月,基本思路是这样的,结果也是对的,你再把所有的可能性都过一遍,就行了,虽然有点笨,但管用。

真要做到滴水不漏,恐怕要用集合或数组来遍历所有可能性,年月日都要判断。

[此贴子已经被作者于2013-3-24 0:00:07编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
sadfox
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:1864 威望:0 精华:0 注册:2013/3/16 21:31:00
  发帖心情 Post By:2013/3/24 0:09:00 [只看该作者]

我是只老菜鸟+老白,才接触狐表学VB呢,现在才会点简单的,你的代码我基本上看不懂,辛苦你了,看来我还得等狐爸、大神了!

 回到顶部
帅哥哟,离线,有人找我吗?
e-png
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2013/3/24 0:22:00 [只看该作者]

Dim cnl As WinForm.ComboBox = Forms("资料查询").Controls("ComboBox1")
Dim tx1 As WinForm.TextBox = Forms("资料查询").Controls("TextBox1")
Dim tx2 As WinForm.TextBox = Forms("资料查询").Controls("TextBox2")
Dim tx3 As WinForm.TextBox = Forms("资料查询").Controls("TextBox3")
Dim t As Table = Tables("资料查询_资料查询")
Dim y As String
If tx2.text = "" And tx3.text = ""
    y = "12"
ElseIf tx2.text = "" And tx3.text <> ""
    msgbox("少月份啦~")
    Return
Else
    y = tx2.text
End If
Dim yf As String = "4,6,9,11,04,06,09,11"
Dim dd,dd1 As String
If yf.contains(tx2.text) And tx1.text IsNot Nothing And tx2.text <> "1"
    dd  = "30"
ElseIf Date.IsLeapYear(tx1.text) = True And (tx2.text = "" Or tx2.text = "2")
    dd = "29"
ElseIf Date.IsLeapYear(tx1.text) = False And tx2.text = "2"
    dd = "28"
ElseIf tx2.text = "1"
    dd = "31"
Else
    dd = "31"
End If
If tx3.text = ""
    dd1 = "1"
Else
    dd1 = tx3.text
End If

 

If cnl.text > "" And tx1.text > "" And tx2.text > "" And tx3.text > ""
    t.Filter = (cnl.text & " = #" & tx1.text & "-" & tx2.Text & "-" & tx3.Text & "#")   
Else

        If cnl.text <> "" And tx1.text <> ""
        If tx1.text.length < 4
            msgbox("年份要4位数")
            Return 
        End If
        t.filter = " " & cnl.text & " > # " & dd1 & "/" & _
        y & "/" & tx1.text & "#  And  " & cnl.text & " < #" & _
        y & "/" & dd & "/" & tx1.text & "# "
    Else
        msgbox("请确认某日期或年份已经输入了")
    End If
End If


 回到顶部
总数 23 1 2 3 下一页