以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 字符如何格式化成日期 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189661) |
||||
-- 作者:dhyskyworld -- 发布时间:2023/12/15 11:35:00 -- 字符如何格式化成日期 TextBox文本框,在文本框中录入年度,如何在代码里将这个文本格式化成日期里的年度,并指定月和日和其他日期列作比较,excel里有这样的代码可以做到,狐表里有吗?帮助里都看过了,跟我说的情况不一样,有的话,请大神们给个可行的代码 [此贴子已经被作者于2023/12/15 11:36:05编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2023/12/15 11:47:00 -- 意思是输入2023,就变成日期:2023-1-1? dim d as date = cdate(e.form.controls("TextBox1").text & "-1-1")
|
||||
-- 作者:dhyskyworld -- 发布时间:2023/12/15 12:59:00 -- 查询按钮代码: Dim d1 As Date = CDate(e.Form.controls("TextBox1").text & "-1-1") Dim d2 As Date = CDate(e.Form.controls("TextBox1").text & "-12-31") Dim dt As DataTable Dim b As New SQLGroupTableBuilder("统计表1", "EI") b.Groups.AddDef("人员类别") b.Groups.AddDef("人员状态") b.Totals.AddDef("_Identify", AggregateEnum.Count, "人数") dt = b.Build() Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") trv.BuildTree(dt, "人员类别|人员状态") trv.StopRedraw For Each nd As WinForm.TreeNode In trv.AllNodes Dim lb1 As String = nd.DataRow("人员类别") Dim zt As String = nd.DataRow("人员状态") Select Case nd.Level Case 0 nd.Text = nd.text & "(" & dt.Compute("Sum(人数)", "人员类别 = \'" & lb1 & "\'") & "人)" Case 1 nd.Text = nd.text & "(" & dt.Compute("Sum(人数)", "人员类别 = \'" & lb1 & "\' And 人员状态 = \'" & zt & "\'") & "人)" Case 2 nd.Text = nd.text & "(" & nd.DataRow("人数") & ")" End Select Next trv.Nodes.Insert("加载所有行", "加载所有行(" & dt.Compute("Sum(人数)") & "人)", 0) trv.ResumeRedraw 如何把满足条件的人进行统计,条件怎么加进代码里,TextBox里输入年度,然后,根据人员状态、进入单位日期、离开单位日期来进行统计,因为不同状态的人需满足的条件不同,比如,在职或在聘的,只需要判断其进入单位日期大于等于d2即可,如果是退休、解聘、调出的,则要同时满足进入单位日期大于等于d2且离开单位日期小于等于d1。 输出的目录树结构还是以下这种结构 |
||||
-- 作者:有点蓝 -- 发布时间:2023/12/15 13:48:00 -- http://www.foxtable.com/webhelp/topics/1626.htm Dim b As New SQLGroupTableBuilder("统计表1", "EI") b.Groups.AddDef("人员类别") b.Groups.AddDef("人员状态") b.Totals.AddDef("_Identify", AggregateEnum.Count, "人数") b.filter = "日期>=#" & d1 & "# and 日期<=#" & d2 & "#" dt = b.Build(true) |
||||
-- 作者:dhyskyworld -- 发布时间:2023/12/15 14:42:00 -- 蓝老师,代码运行没有出错,但是筛选不出想要的结果,目录树显示也不正确,具体问题如下: 1、点击查询的结果和点击加载所有行,ListView还是显示所有的人员。 2、人员类别有三类,但是目录树只有一类在职人员。确定当年不止在职这一类人员存在。如下图: 3、点击职员节点,ListView列出的是所有的职员,而不是只列出符合条件的职员。 职员节点下的显示倒是正常的。点击后,ListView的结果也正常 还请蓝老师再指导一下,下面是我现在的代码: Dim d1 As Date = CDate(e.Form.controls("TextBox1").text & "-1-1") Dim d2 As Date = CDate(e.Form.controls("TextBox1").text & "-12-31") Dim dt As DataTable Dim b As New SQLGroupTableBuilder("统计表1", "EI") b.Groups.AddDef("人员类别") b.Groups.AddDef("人员状态") b.Totals.AddDef("_Identify", AggregateEnum.Count, "人数") b.filter = "离开单位日期>=#" & d1 & "# and 进入单位日期<=#" & d2 & "#" dt = b.Build() Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") trv.BuildTree(dt, "人员类别|人员状态") trv.StopRedraw For Each nd As WinForm.TreeNode In trv.AllNodes Dim lb1 As String = nd.DataRow("人员类别") Dim zt As String = nd.DataRow("人员状态") Select Case nd.Level Case 0 nd.Text = nd.text & "(" & dt.Compute("Sum(人数)", "人员类别 = \'" & lb1 & "\'") & "人)" Case 1 nd.Text = nd.text & "(" & dt.Compute("Sum(人数)", "人员类别 = \'" & lb1 & "\' And 人员状态 = \'" & zt & "\'") & "人)" Case 2 nd.Text = nd.text & "(" & nd.DataRow("人数") & ")" End Select Next trv.Nodes.Insert("加载所有行", "加载所有行(" & dt.Compute("Sum(人数)") & "人)", 0) trv.ResumeRedraw Dim lvw As WinForm.ListView lvw = e.Form.CreateControl("ListView1", ControlTypeEnum.ListView) lvw.StopRedraw() lvw.Groups.Clear() lvw.Columns.Clear() lvw.Rows.Clear() lvw.Images.Clear() lvw.Dock = System.Windows.Forms.DockStyle.Fill lvw.View = ViewMode.Details lvw.TitleSize = New Size(130, 80) lvw.GridLines = True lvw.AllowDrag = True lvw.Images.AddImage("Man", "Man.ico", "Man48.ico") lvw.Images.AddImage("Woman", "Woman.ico", "Woman48.ico") e.Form.Controls("SplitContainer1").Panel2.AddControl(lvw) Dim cls() As String = {"姓名", "人员类别", "进入单位日期", "离开单位日期", "人员状态"} For i As Integer = 0 To cls.Length - 1 Dim c As WinForm.ListViewColumn = lvw.Columns.Add() c.Name = cls(i) c.Text = cls(i) c.TextAlign = HorizontalAlignment.Center Next For Each lb As String In DataTables("EI").GetValues("人员类别") Dim grp As WinForm.ListViewGroup = lvw.Groups.Add() grp.Name = lb grp.Text = lb Next For Each dr As DataRow In DataTables("EI").DataRows Dim r As WinForm.ListViewRow = lvw.Rows.Add() r.Group = dr("人员类别") For Each cl As String In cls r(cl) = dr(cl) Next If dr("性别") = "男" Then r.ImageKey = "Man" Else r.ImageKey = "Woman" End If r.Tag = dr Next For Each c As WinForm.ListViewColumn In lvw.Columns c.AutoResize Next lvw.ShowGroups = False lvw.ResumeRedraw() [此贴子已经被作者于2023/12/15 14:44:33编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2023/12/15 15:05:00 -- 请上传实例说明 |
||||
-- 作者:dhyskyworld -- 发布时间:2023/12/15 15:29:00 -- 已上传,点击查询后退休节点的数据也不对
[此贴子已经被作者于2023/12/15 15:39:07编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2023/12/15 15:45:00 -- 怎么测试?哪个数据有问题? |
||||
-- 作者:dhyskyworld -- 发布时间:2023/12/15 15:56:00 -- 人员管理窗口,左下那个人员查询 |
||||
-- 作者:有点蓝 -- 发布时间:2023/12/15 16:12:00 -- 符合这个条件的数据确实有7条呀,什么地方不对?那么正确的应该是哪几行数据? |