以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  不知能否实现日期的这种下拉显示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=111458)

--  作者:有点辣
--  发布时间:2017/12/22 11:02:00
--  不知能否实现日期的这种下拉显示
想对日期字段做查询,不想用起止日期的方式
想要的效果是:根据日期字段的值,比如2017-01-01,2071-07-08,在查询的下拉控件里显示 2017-01|2017-08
即:根据日期字段的值,动态生成 年-月 的值供选择,查询时,根据所选年月来查当月的记录
折腾了很久,没做出来,望老师点拨一下
主要是不知怎么生成2017-01这种年-月的格式。

--  作者:有点甜
--  发布时间:2017/12/22 12:07:00
--  

如果是access、内部数据源,这样写

 

控件.ComboList = DataTables("订单").SQLGetComboListString("format(日期列, \'yyyy-MM\')")

 

查询的时候,截取年、月,然后合成条件,如

 

Dim ary() as string = 值.split("-")

Dim d  As Date = New Date(ary(0), ary(1), 1)

Tables("表A").Filter = "日期列 >= #" & d & "# and 日期列 < #" & d.AddMonths(1) & "#"

 

 


--  作者:有点辣
--  发布时间:2017/12/22 13:09:00
--  

老师代码是不是有问题?

我照着抄,下拉不出值,把SQLGetComboListString改为 GetComboListString,提示 无法找到列 format(出库日期。


--  作者:有点甜
--  发布时间:2017/12/22 14:28:00
--  
以下是引用有点辣在2017/12/22 13:09:00的发言:

老师代码是不是有问题?

我照着抄,下拉不出值,把SQLGetComboListString改为 GetComboListString,提示 无法找到列 format(出库日期。

 

必须要用 SQLGetComboListString,不能用 GetComboListString。

 

否则,你就必须循环每一行,转换成年月的形式,再赋值给下拉。


--  作者:有点辣
--  发布时间:2017/12/22 14:33:00
--  
用SQLGetComboListString不出结果,是sql数据源
--  作者:有点甜
--  发布时间:2017/12/22 14:49:00
--  
以下是引用有点辣在2017/12/22 14:33:00的发言:
用SQLGetComboListString不出结果,是sql数据源

 

sqlserver数据源这样写

 

控件.ComboList = DataTables("订单").SQLGetComboListString("CONVERT(VARCHAR(7),日期列,120)")

 


--  作者:有点辣
--  发布时间:2017/12/22 14:57:00
--  

可以下拉了

但下拉的年月没有排序,想按日期排序

我写成  DataTables("订单").SQLGetComboListString("CONVERT(VARCHAR(7),出库日期,120)",,"出库日期")

又不出值了。


--  作者:有点甜
--  发布时间:2017/12/22 15:45:00
--  

还是写代码吧

 

Dim ls As new List(Of String)
For Each dr As DataRow In DataTables("订单").Select("", "出库日期")
    Dim str As String = format(dr("出库日期"), "yyyy-MM")
    If ls.Contains(str) = False Then
        ls.add(str)
    End If
Next
msgbox(String.Join("|", ls.ToArray))

[此贴子已经被作者于2017/12/22 15:44:50编辑过]