Foxtable(狐表)用户栏目专家坐堂 → 求助-分类统计


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

主题:求助-分类统计

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


加好友 发短信
等级:幼狐 帖子:92 积分:867 威望:0 精华:0 注册:2018/7/3 0:45:00
求助-分类统计  发帖心情 Post By:2024/10/21 15:05:00 [显示全部帖子]

老师,我的数据源是表1如图一所示,(绿色部分是表头),我想通过统计得到表2如图二所示的数据统计结果,(绿色部分是表头),

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20241021145255.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20241021145312.png
图片点击可在新窗口打开查看

统计情况是从表一中按销档、标号来统计产量,统计这两个条件下按物料名称的用量统计,我现在不清楚该如何来进行统计,烦请老师,帮忙分析下思路,也请老师帮做下代码,谢谢老师。

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


加好友 发短信
等级:幼狐 帖子:92 积分:867 威望:0 精华:0 注册:2018/7/3 0:45:00
  发帖心情 Post By:2024/10/23 10:44:00 [显示全部帖子]

老师,谢谢您
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table



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


加好友 发短信
等级:幼狐 帖子:92 积分:867 威望:0 精华:0 注册:2018/7/3 0:45:00
  发帖心情 Post By:2024/10/23 11:54:00 [显示全部帖子]

谢谢老师,我会研究下代码的,再次感谢

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


加好友 发短信
等级:幼狐 帖子:92 积分:867 威望:0 精华:0 注册:2018/7/3 0:45:00
  发帖心情 Post By:2024/10/24 13:56:00 [显示全部帖子]

老师您好,学习您代码还是有些迷糊,我给您发的临时数据是另建的,也是我当时没考虑清楚,我按我的数据来源及显示位置做了一些修改,可就是改不上,还得请老师帮我处理下,我再对照学习,谢谢老师。
数据结构:
我原表A的数据是SQL数据库里的“白塔砼销明细”-g.CTextBox522")和Dim qz As WinForm.TextBox = e.Form.Controls("TextBox523")
数据列原先的不变,现在增加:砼销明细_生产日期0,生产信息_生产信息_生产线,生产信息_生产信息_浇筑方式,条件是:[砼销明细_生产日期0] >= '" & qq.text & "' and [砼销明细_生产日期0] <= '" & qz.text & "' 
显示列的顺序为:砼销明细_生产日期0,生产信息_生产信息_生产线,销档,标号,生产信息_生产信息_浇筑方式,产量,后面就是那些用料的了

您之前的代码如下:
Dim dtb As New DataTableBuilder("统计表1")
dtb.AddDef("销档", GetType(String), 16)
dtb.AddDef("标号", GetType(String), 16)
dtb.AddDef("产量", GetType(Integer))
Dim lst As New List(Of String)
For Each c As Col In Tables("表A").cols
    If c.Name Like "*_物料_*" Then
        For Each v As String In DataTables("表A").GetValues(c.Name, c.Name & " is not null")
            If lst.Contains(v) = False Then
                lst.Add(v)
                dtb.AddDef(v, GetType(Double))
            End If
        Next
    End If
Next
dtb.Build()
For Each v As String() In DataTables("表A").GetValues("砼销明细_销档|砼销明细_生产信息_标号")
    Dim dr1 As DataRow = DataTables("统计表1").AddNew()
    dr1("销档") = v(0)
    dr1("标号") = v(1)
    For Each dr2 As DataRow In DataTables("表A").Select("砼销明细_销档 = '" & v(0) & "' and 砼销明细_生产信息_标号 = '" & v(1) & "'")
        dr1("产量") = dr1("产量") + dr2("砼销明细_生产信息_产量")
        For Each c As Col In Tables("表A").cols
            If c.Name Like "*_物料_*" Then
                If dr2.IsNull(c.Name) = False Then
                    dr1(dr2(c.Name)) = dr1(dr2(c.Name)) + dr2(c.Name.Replace("物料", "用量"))
                End If 
            End If
        Next
    Next
Next
MainTable = Tables("统计表1")

烦请老师帮忙修改下,谢谢!

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


加好友 发短信
等级:幼狐 帖子:92 积分:867 威望:0 精华:0 注册:2018/7/3 0:45:00
  发帖心情 Post By:2024/10/24 14:48:00 [显示全部帖子]

老师,我的数据是SQL数据库里的“白塔砼销明细”-g.C
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目13.table



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


加好友 发短信
等级:幼狐 帖子:92 积分:867 威望:0 精华:0 注册:2018/7/3 0:45:00
  发帖心情 Post By:2024/10/24 14:48:00 [显示全部帖子]

 "统计工作"
[此贴子已经被作者于2024/10/24 14:50:15编辑过]

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


加好友 发短信
等级:幼狐 帖子:92 积分:867 威望:0 精华:0 注册:2018/7/3 0:45:00
  发帖心情 Post By:2024/10/24 14:49:00 [显示全部帖子]

g.C

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


加好友 发短信
等级:幼狐 帖子:92 积分:867 威望:0 精华:0 注册:2018/7/3 0:45:00
  发帖心情 Post By:2024/10/25 14:23:00 [显示全部帖子]

老师,请指教下,我将条件改好后如下:现在出现2个问题,1、我如何将统计设定在指定日期内,即生产日期0>=qq,生产日期0<=qz;2、如何将统计结果显示在指定表工作总表_Table38中;
Dim qq As WinForm.TextBox = e.Form.Controls("TextBox522")
Dim qz As WinForm.TextBox = e.Form.Controls("TextBox523")

Dim dtb As New DataTableBuilder("统计表1")
dtb.AddDef("日期", GetType(String), 16)
dtb.AddDef("产线", GetType(String), 16)
dtb.AddDef("销档", GetType(String), 16)
dtb.AddDef("标号", GetType(String), 16)
dtb.AddDef("方式", GetType(String), 16)
dtb.AddDef("产量", GetType(Double))
Dim lst As New List(Of String)
For Each c As Col In Tables("白塔砼销明细").cols
    If c.Name Like "*_物料_*" Then
        For Each v As String In DataTables("白塔砼销明细").SQLGetValues(c.Name, c.Name & " is not null")
            If lst.Contains(v) = False Then
                lst.Add(v)
                dtb.AddDef(v, GetType(Double))
            End If
        Next
    End If
Next
dtb.Build()

For Each v As String() In DataTables("白塔砼销明细").SQLGetValues("砼销明细_生产日期0|砼销明细_生产信息_生产线|砼销明细_销档|砼销明细_生产信息_等级强度|砼销明细_生产信息_浇筑方式")
    Dim dr1 As DataRow = DataTables("统计表1").AddNew()
    dr1("日期") = v(0)
    dr1("产线") = v(1)
    dr1("销档") = v(2)
    dr1("标号") = v(3)
    dr1("方式") = v(4)
    For Each dr2 As DataRow In DataTables("白塔砼销明细").SQLSelect("砼销明细_生产日期0 = '" & v(0) & "' and 砼销明细_生产信息_生产线 = '" & v(1) & "' and 砼销明细_销档 = '" & v(2) & "' and 砼销明细_生产信息_标号 = '" & v(3) & "' and 砼销明细_生产信息_浇筑方式 = '" & v(4) & "' ")
        dr1("产量") = dr1("产量") + dr2("砼销明细_生产信息_产量")
        For Each c As Col In Tables("白塔砼销明细").cols
            If c.Name Like "*_物料_*" Then
                If dr2.IsNull(c.Name) = False Then
                    dr1(dr2(c.Name)) = dr1(dr2(c.Name)) + dr2(c.Name.Replace("物料", "用量"))
                End If 
            End If
        Next
    Next
Next

MainTable = Tables("统计表1")
[此贴子已经被作者于2024/10/25 15:09:19编辑过]

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


加好友 发短信
等级:幼狐 帖子:92 积分:867 威望:0 精华:0 注册:2018/7/3 0:45:00
  发帖心情 Post By:2024/10/25 17:32:00 [显示全部帖子]

老师,学习了一下午,真没处理出来,除了上面两个问题外,还有两个问题,1、不出现统计表1的临时表,2、那个产量和各物料的用量都没统计出来,我数据是存储在SQL数据库,后台数据源是“统计工作”,要求后台统计,烦请老师,帮忙处理一下吧,工作上等着,谢谢老师!

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


加好友 发短信
等级:幼狐 帖子:92 积分:867 威望:0 精华:0 注册:2018/7/3 0:45:00
  发帖心情 Post By:2024/10/26 9:52:00 [显示全部帖子]

老师,我改的代码如下:
Dim qq As WinForm.TextBox = e.Form.Controls("TextBox522")
Dim qz As WinForm.TextBox = e.Form.Controls("TextBox523")

Dim dtb As New DataTableBuilder("表1")
dtb.AddDef("日期", GetType(String), 16)
dtb.AddDef("产线", GetType(String), 16)
dtb.AddDef("销档", GetType(String), 16)
dtb.AddDef("标号", GetType(String), 16)
dtb.AddDef("方式", GetType(String), 16)
dtb.AddDef("产量", GetType(Double))
Dim lst As New List(Of String)
For Each c As Col In Tables("白塔砼销明细").cols
    If c.Name Like "*_物料_*" Then
        For Each v As String In DataTables("白塔砼销明细").SQLGetValues(c.Name, c.Name & " is not null")
            If lst.Contains(v) = False Then
                lst.Add(v)
                dtb.AddDef(v, GetType(Double))
            End If
        Next
    End If
Next
Tables("工作总表_Table161").DataSource = dtb.BuildDataSource()

For Each v As String() In DataTables("白塔砼销明细").SQLGetValues("砼销明细_生产日期0|砼销明细_生产信息_生产线|砼销明细_销档|砼销明细_生产信息_等级强度|砼销明细_生产信息_浇筑方式", "砼销明细_生产日期0 >= '" & qq.text & "' and 砼销明细_生产日期0 <= '" & qz.text & "' and 砼销明细_生产信息_实生 is not null")
    Dim dr1 As DataRow = DataTables("工作总表_Table161").AddNew()
    dr1("日期") = v(0)
    dr1("产线") = v(1)
    dr1("销档") = v(2)
    dr1("标号") = v(3)
    dr1("方式") = v(4)
    For Each dr2 As DataRow In DataTables("白塔砼销明细").SQLSelect("砼销明细_生产日期0 = '" & v(0) & "' and 砼销明细_生产信息_生产线 = '" & v(1) & "' and 砼销明细_销档 = '" & v(2) & "' and 砼销明细_生产信息_标号 = '" & v(3) & "' and 砼销明细_生产信息_浇筑方式 = '" & v(4) & "' ")
        dr1("产量") = dr1("产量") + dr2("砼销明细_生产信息_实生")
        For Each c As Col In Tables("白塔砼销明细").cols
            If c.Name Like "*_物料_*" Then
                If dr2.IsNull(c.Name) = False Then
                    dr1(dr2(c.Name)) = dr1(dr2(c.Name)) + dr2(c.Name.Replace("物料", "用量"))
                End If 
            End If
        Next
    Next
Next

Tables("工作总表_Table161").AutoSizeCols()

现在的问题是,产量和各种材料的用量没有统计出来,数据的SQL后台统计,我的数据源是“统计工作”

 回到顶部
总数 15 1 2 下一页