Foxtable(狐表)用户栏目专家坐堂 → 窗口筛选树统计问题


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

主题:窗口筛选树统计问题

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


加好友 发短信
等级:三尾狐 帖子:694 积分:4969 威望:0 精华:0 注册:2016/4/15 22:24:00
窗口筛选树统计问题  发帖心情 Post By:2021/3/10 13:35:00 [显示全部帖子]

窗口筛选树统计时,点击显示所有行数据出错,请老师帮我看看窗口目录树代码错在哪里?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


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


加好友 发短信
等级:三尾狐 帖子:694 积分:4969 威望:0 精华:0 注册:2016/4/15 22:24:00
问题已解决  发帖心情 Post By:2021/3/10 15:17:00 [显示全部帖子]

非常感谢蓝老师

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


加好友 发短信
等级:三尾狐 帖子:694 积分:4969 威望:0 精华:0 注册:2016/4/15 22:24:00
代码问题  发帖心情 Post By:2023/10/10 14:44:00 [显示全部帖子]

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.Tile '显示模式为平铺
lvw.Images.LargeSize = New Size(65, 75) '定义大图标尺寸
lvw.TitleSize = New Size(150, 90) '设置平铺区域的大小 
Dim cls() As String = {"楼幢号", "空行1", "户型", "空行2", "主体", "砌体"} '定义列名
For i As Integer = 0 To cls.Length - 1 '增加列
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
    c.Name = cls(i) '指定列名
Next
For Each dr As DataRow In DataTables("国家").DataRows '从数据表中提取数据   
    Dim Key As String = dr("照片")'获取此员工的照片文件
    lvw.Images.AddLargeImage(Key, Key) '添加照片,直接用文件名作为图片键值
    Dim vr As WinForm.ListViewRow = lvw.Rows.Add() '增加一行    
    vr.ToolTipText = dr("地块分组") '设置此行的动态提示
    vr.ImageKey = Key '设置图片键值
    vr.Group = dr("地块分组") '指定所属分组      
    vr("楼幢号") = dr("楼幢号")
    vr("空行1") = "   "
    vr("户型") = "户型:" & dr("户型")
    vr("空行2") = "   "
    vr("主体") = "主体:" & dr("主体") 
    vr("砌体") = "砌体:" & dr("砌体") 
Next
Dim Filter As String
With e.Form.Controls("地块分组")
    If .Value IsNot Nothing Then
        Filter = "地块分组 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("户型")
    If .Value IsNot Nothing Then
        Filter = "户型 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("主体")
    If .Value IsNot Nothing Then
        Filter = "主体 = '" & .Value & "'"
    End If
End With
If Filter > "" Then
    DataTables("国家").loadFilter = Filter
    DataTables("国家").load
End If
lvw.ResumeRedraw() '恢复绘制
老师,帮我看看这个代码,要筛选几次才显示正确,是哪里的问题

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


加好友 发短信
等级:三尾狐 帖子:694 积分:4969 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/10/10 15:00:00 [显示全部帖子]

With e.Form.Controls("地块分组")
    If .Value IsNot Nothing Then
        Filter = "地块分组 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("户型")
    If .Value IsNot Nothing Then
        Filter = "户型 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("主体")
    If .Value IsNot Nothing Then
        Filter = "主体 = '" & .Value & "'"
    End If
End With
If Filter > "" Then
    DataTables("国家").loadFilter = Filter
    DataTables("国家").load
End If
加入上述筛选代码,要点按钮2次才筛选正确



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


加好友 发短信
等级:三尾狐 帖子:694 积分:4969 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/10/10 15:30:00 [显示全部帖子]

对,要点按钮2次才出来

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


加好友 发短信
等级:三尾狐 帖子:694 积分:4969 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/10/10 15:50:00 [显示全部帖子]

Dim Filter As String
With e.Form.Controls("地块分组")
    If .Value IsNot Nothing Then
        Filter = "地块分组 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("户型")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "户型 in ('" & .Value.replace(",", "','") & "')" 
        MessageBox.Show(Filter)
    End If
End With
With e.Form.Controls("主体")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "主体 in ('" & .Value.replace(",", "','") & "')" 
        MessageBox.Show(Filter)
    End If
End With
If Filter > "" Then
    DataTables("国家").loadFilter = Filter
    DataTables("国家").load
End If
我将代码换成这样,还是一样的,要点2次才出正确的结果

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


加好友 发短信
等级:三尾狐 帖子:694 积分:4969 威望:0 精华:0 注册:2016/4/15 22:24:00
代码问题  发帖心情 Post By:2023/10/10 16:35:00 [显示全部帖子]

窗口,三种方法都有问题
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:示例1010.foxdb


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


加好友 发短信
等级:三尾狐 帖子:694 积分:4969 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/10/10 17:09:00 [显示全部帖子]

方法1:不能用
方法2:没有问题
Dim Filter As String
With e.Form.Controls("地区")
    If .Value IsNot Nothing Then
        Filter = "地区 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("部门")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "部门 in ('" & .Value.replace(",", "','") & "')" 
    End If
End With
With e.Form.Controls("性别")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "性别 in ('" & .Value.replace(",", "','") & "')" 
    End If
End With
If Filter > "" Then
    DataTables("员工").loadFilter = Filter
    DataTables("员工").load
End If

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.Tile '显示模式为平铺
lvw.Images.LargeSize = New Size(65, 75) '定义大图标尺寸
lvw.TitleSize = New Size(150, 90) '设置平铺区域的大小 
Dim cls() As String = {"姓名", "空行1", "部门", "空行2", "地区", "性别"} '定义列名
For i As Integer = 0 To cls.Length - 1 '增加列
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
    c.Name = cls(i) '指定列名
Next
For Each dr As DataRow In DataTables("员工").DataRows '从数据表中提取数据   
    Dim Key As String = dr("照片")'获取此员工的照片文件
    lvw.Images.AddLargeImage(Key, Key) '添加照片,直接用文件名作为图片键值
    Dim vr As WinForm.ListViewRow = lvw.Rows.Add() '增加一行    
    vr.ToolTipText = dr("编号") '设置此行的动态提示
    vr.ImageKey = Key '设置图片键值
    vr.Group = dr("地区") '指定所属分组      
    vr("姓名") = dr("姓名")
    vr("空行1") = "   "
    vr("部门") = "部门:" & dr("部门")
    vr("空行2") = "   "
    vr("地区") = "地区:" & dr("地区") 
    vr("性别") = "性别:" & dr("性别") 
Next
lvw.ResumeRedraw() '恢复绘制
方法3:也没有问题
Dim Filter As String
With e.Form.Controls("地区")
    If .Value IsNot Nothing Then
        Filter = "地区 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("部门")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "部门 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("性别")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "性别 = '" & .Value & "'"
    End If
End With
If Filter > "" Then 
    DataTables("员工").loadFilter = Filter
    DataTables("员工").load
End If

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() '暂停绘制
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.Tile '显示模式为平铺
lvw.Images.LargeSize = New Size(65, 75) '定义大图标尺寸
lvw.TitleSize = New Size(150, 90) '设置平铺区域的大小 
Dim cls() As String = {"姓名", "空行1", "部门", "空行2", "地区", "性别"} '定义列名
For i As Integer = 0 To cls.Length - 1 '增加列
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
    c.Name = cls(i) '指定列名
Next
For Each dr As DataRow In DataTables("员工").DataRows '从数据表中提取数据   
    Dim Key As String = dr("照片")'获取此员工的照片文件
    lvw.Images.AddLargeImage(Key, Key) '添加照片,直接用文件名作为图片键值
    Dim vr As WinForm.ListViewRow = lvw.Rows.Add() '增加一行    
    vr.ToolTipText = dr("编号") '设置此行的动态提示
    vr.ImageKey = Key '设置图片键值
    vr.Group = dr("地区") '指定所属分组      
    vr("姓名") = dr("姓名")
    vr("空行1") = "   "
    vr("部门") = "部门:" & dr("部门")
    vr("空行2") = "   "
    vr("地区") = "地区:" & dr("地区") 
    vr("性别") = "性别:" & dr("性别") 
Next
lvw.ResumeRedraw() '恢复绘制

老师,方法2与方法3哪个好一些?


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


加好友 发短信
等级:三尾狐 帖子:694 积分:4969 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/10/12 11:16:00 [显示全部帖子]

listview平铺方式显示数据,几行数据显示行间距太紧凑,我将大图片放大后也不能解决,请教老师如何调整

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


加好友 发短信
等级:三尾狐 帖子:694 积分:4969 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2023/10/16 14:30:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "考勤时间汇总" 
        If e.DataRow.IsNull("考勤时间汇总") = False Then
            ' Dim ary() As String = e.DataRow("考勤时间汇总").split(",") 
            ' For Each str As String In ary
            For Each str As String In e.DataRow("考勤时间汇总").split(",") 
                Dim d As Date = New Date(1900, 1, 1, str.Split(":")(0), str.Split(":")(1), 0)
                Dim fdr As DataRow = DataTables("班段设置").Find("起始时间 <= #" & d & "#", "起始时间 desc")
                If fdr IsNot Nothing Then
                    Dim Idx As Integer = Tables("班段设置").FindRow(fdr)
                    Dim cname As String = "自动计算_第" & idx + 1 & "段"
                    Dim temp As Date = CDate(e.DataRow(cname))
                    temp = New Date(1900, 1, 1, temp.Hour, temp.Minute, 0)
                    If e.DataRow.IsNull(cname) Then
                        e.DataRow("自动计算_第" & idx + 1 & "段") = d
                    End If
                Else 
                    
                End If                
            Next 
        End If
End Select
老师,上面这段代码正确,我想加一个判断,请教下面这个代码怎么修改?
Select Case e.DataCol.Name
    Case "考勤时间汇总" 
        If e.DataRow.IsNull("考勤时间汇总") = Nothing Then 
            e.DataRow("自动计算_第1段") = Nothing
            e.DataRow("自动计算_第2段") = Nothing
            e.DataRow("自动计算_第3段") = Nothing
            e.DataRow("自动计算_第4段") = Nothing
            e.DataRow("自动计算_第5段") = Nothing
            e.DataRow("自动计算_第6段") = Nothing 
        Else 
            For Each str As String In e.DataRow("考勤时间汇总").split(",") 
                Dim d As Date = New Date(1900, 1, 1, str.Split(":")(0), str.Split(":")(1), 0)
                Dim fdr As DataRow = DataTables("班段设置").Find("起始时间 <= #" & d & "#", "起始时间 desc")
                If fdr IsNot Nothing Then
                    Dim Idx As Integer = Tables("班段设置").FindRow(fdr)
                    Dim cname As String = "自动计算_第" & idx + 1 & "段"
                    Dim temp As Date = CDate(e.DataRow(cname))
                    temp = New Date(1900, 1, 1, temp.Hour, temp.Minute, 0)
                    If e.DataRow.IsNull(cname) Then
                        e.DataRow("自动计算_第" & idx + 1 & "段") = d
                    End If
                Else 
                    
                End If 
            Next 
        End If
End Select


 回到顶部
总数 44 1 2 3 4 5 下一页