Foxtable(狐表)用户栏目专家坐堂 → 筛选树中的日期列如何处理成年月显示?


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

主题:筛选树中的日期列如何处理成年月显示?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/8/8 23:56:00 [只看该作者]

筛选有些问题,重来。

发错了文件。
[此贴子已经被作者于2013-8-16 21:19:16编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/8/16 21:19:00 [只看该作者]

发觉发错了,重新发一次。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:筛选树中日期处理 (1).foxdb



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


加好友 发短信
等级:四尾狐 帖子:976 积分:8521 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/8/17 10:30:00 [只看该作者]

谢谢有点甜,这个确实弄得头晕。我也采用增加临时列的方式,每次控制只能选择一个日期列,多个就不知道怎么弄了。因为增加后会导致表改变,如果切换到其他表会提示保存,所以只好在最后生成目录树后又将表还原了。

Dim Y As WinForm.RadioButton = e.Form.Controls("RbtF_Y")
Dim YM As WinForm.RadioButton = e.Form.Controls("RbtF_YM")
Dim tr As WinForm.TreeView = e.Form.Controls("Tr_Flt")

Dim s As String = e.Sender.Text
If s = "" OrElse s = "先选择分组列" OrElse Mtb Is Nothing Then
    Return
End If

Dim t As Integer
Dim dt As DataTable
Dim dr As DataRow
Dim dc As DataCol
Dim ColS As String

dt = CurrentTable.DataTable

tr.StopRedraw()
tr.Nodes.Clear

'根据所选日期列类型替换分组列的值以便生成所需要的日期目录树
Dim Values() As String
Values = s.split("|")
For i As Integer = 0 To Values.Length - 1
    If dt.dataCols(Values(i)).IsDate Then
        ColS = Values(i)
        t = t + 1
        If t > 1 Then
            e.Sender.Text = ""
            MessageBox.Show("一次只能选择一个日期列!","提示")
            Return
        End If
        If dt.dataCols.Contains(Values(i) & "Y") = False Then
            dt.dataCols.Add(Values(i) & "Y",Gettype(Integer))
            dt.dataCols.Add(Values(i) & "M",Gettype(Integer))
            CurrentTable.Cols(Values(i) & "Y").Visible = False
            CurrentTable.Cols(Values(i) & "M").Visible = False
            For Each dr In dt.DataRows
                dr(Values(i) & "Y") = Year(dr(Values(i)))
                dr(Values(i) & "M") = Month(dr(Values(i)))
            Next
        End If
        If Y.checked = True Then
            s = s.Replace(ColS,ColS & "Y")
        ElseIf YM.checked = True Then
            s = s.Replace(ColS,ColS & "Y|" & ColS & "M")
        End If
    End If
Next

tr.BuildTree(dt,s)

tr.ResumeRedraw()
If tr.AllNodes.Count > 0 Then
    tr.Nodes.Insert("显示所有",0)
End If
tr.Select()
dt.RejectChanges()

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/8/17 23:02:00 [只看该作者]

以下是引用zpx_2012在2013-8-17 10:30:00的发言:
谢谢有点甜,这个确实弄得头晕。我也采用增加临时列的方式,每次控制只能选择一个日期列,多个就不知道怎么弄了。因为增加后会导致表改变,如果切换到其他表会提示保存,所以只好在最后生成目录树后又将表还原了。


可以控制多个日期列的。列名为 年1 月1 年2 月2 这样,加几句代码而已,代码还是那样写,不难。

第二个问题,不知道为什么会提示保存,不应该的。

 回到顶部
总数 14 上一页 1 2