Foxtable(狐表)用户栏目专家坐堂 → 关于统计表


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

主题:关于统计表

美女呀,离线,留言给我吧!
做自己
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3756 威望:0 精华:0 注册:2017/8/17 17:47:00
关于统计表  发帖心情 Post By:2017/9/4 18:05:00 [只看该作者]

一个表里面有多个仓库的数据,我想在表里面统计名字相同的数据,把数量统计一个和到统计表里面,但是每个仓库的单价可能不一样,这样用统计表貌似就不合适了,我应该怎么处理

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


加好友 发短信
等级:超级版主 帖子:112401 积分:572273 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/4 18:11:00 [只看该作者]

上传实例,并截图详细说明要实现什么最终效果

 回到顶部
美女呀,离线,留言给我吧!
做自己
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3756 威望:0 精华:0 注册:2017/8/17 17:47:00
  发帖心情 Post By:2017/9/4 18:47:00 [只看该作者]

由于数据表数据较多,有什么好办法能提高效率吗?

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


加好友 发短信
等级:超级版主 帖子:112401 积分:572273 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/4 20:11:00 [只看该作者]

具体上传实例说明。不同表结构,不同需求处理方法不一样

 回到顶部
美女呀,离线,留言给我吧!
做自己
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3756 威望:0 精华:0 注册:2017/8/17 17:47:00
  发帖心情 Post By:2017/9/5 9:51:00 [只看该作者]

我描述一下把,就是一个表里面有仓库名称,物料名称,数量,想把物料名称一样的数量加起来,生成一个新的表

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


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

直接对物料名称分组统计不就好了?

 

请具体做一个foxtable例子发上来说明。


 回到顶部
美女呀,离线,留言给我吧!
做自己
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3756 威望:0 精华:0 注册:2017/8/17 17:47:00
  发帖心情 Post By:2017/9/5 13:22:00 [只看该作者]

'''
Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls|Excel文件|*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
Else
    Return
End If
Dim Book As New XLS.Book(dlg.FileName)
Dim Sheet As XLS.Sheet = Book.Sheets(0)

‘注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"仓库名称""存货编码","全球代码","存货分类名称","存货名称","原现存数量","原可用数量","原参考售价标准","现存数量","可用数量","参考售价标准","批号"}
Dim nmsX() As String = {"仓库名称","存货编码","全球代码","存货分类名称","存货名称","现存数量","可用数量","参考售价标准","批号"}
’注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
Dim pattern As String = "[\u4e00-\u9fa5| ]"
Dim strSta As String
For n As Integer = 1 To Sheet.Rows.Count -1
    ' If Sheet(n,5).Value.Contains("(") Or Sheet(n,5).Value.Contains(")") Or Sheet(n,6).Value.Contains("(") Or Sheet(n,6).Value.Contains(")") Or Sheet(n,7).Value.Contains("(") Or Sheet(n,7).Value.Contains(")") Then
    ' Else
    Dim drDaoRu As DataRow = DataTables("存货信息导入数据表").AddNew()
    For m As Integer = 0 To nmsX.Length - 1
        If m=0 Then
        Else If m=2 Then
        Else If m=8 Then
        Else  If m=5 Then
            If Sheet(n,5).Value = "充足" Then
                drDaoRu(nmsX(5)) = 12
            Else If Sheet(n,5).Value.Trim() = ""  Then
                drDaoRu(nmsX(5)) = 0
            Else
                drDaoRu(nmsX(5)) = CSng(Sheet(n,m).Value)
            End If
        Else If  m=6 Then
            If Sheet(n,6).Value = "充足" Then
                drDaoRu(nmsX(6)) = 12
            Else If Sheet(n,6).Value.Trim() = ""
                drDaoRu(nmsX(6)) = 0
            Else
                drDaoRu(nmsX(6)) = CSng(Sheet(n,m).Value)
            End If
        Else If m=7 Then
            If Sheet(n,7).Value.Trim() = "" Then
                drDaoRu(nmsX(7)) = 0
            Else If Sheet(n,7).Value.Trim() = "*" Then
                drDaoRu(nmsX(7)) = 0
            Else
                Dim Multi As String = Sheet(n,m).Value
                Dim Values1() As String
                Values1 = Multi.split("(")
                Dim Values2() As String
                Values2 = Values1(0).split(" ")
                Dim Values() As String
                Values = Values2(0).split("-")
                strSta = System.Text.RegularExpressions.Regex.Replace(Values(Values.Length-1), pattern ,"")
                drDaoRu(nmsX(7)) = CSng(strSta.Trim())
            End If
        Else
            drDaoRu(nmsX(m)) = Sheet(n,m).Value
        End If
    Next
    drDaoRu.Save
    'End If
Next
Dim g As New GroupTableBuilder("存货统计表", DataTables("存货信息导入数据表"))
g.Groups.AddDef("存货编码")
g.Groups.AddDef("存货分类名称")
g.Groups.AddDef("存货名称")
g.Totals.AddDef("现存数量")
g.Totals.AddDef("可用数量")
g.Totals.AddDef("参考售价标准")
g.Build()
Tables("存货信息表").StopRedraw()
Dim drListDaoRu As List (of DataRow)
Dim drNew As DataRow
Dim dr As DataRow
Dim drFind As DataRow
drListDaoRu = DataTables("存货统计表").Select("[存货编码]<>''")
For Each drTongJi As DataRow In drListDaoRu
    dr = DataTables("存货信息表").Find("[存货编码] = '"& drTongJi("存货编码") &"' And [存货名称] = '"& drTongJi("存货名称") &"'")
    If dr IsNot Nothing Then
        dr("原现存数量") = dr("现存数量")
        dr("原可用数量") = dr("可用数量")
        dr("原参考售价标准") = dr("参考售价标准")
        dr("原日期") = dr("现日期")
        dr("现日期") = Date.Today
        dr("现存数量") = drTongJi("现存数量")
        dr("可用数量") = drTongJi("可用数量")
        dr("参考售价标准") = drTongJi("参考售价标准")
    Else
        drNew = DataTables("存货信息表").AddNew
        drNew("现日期") = Date.Today
        drNew("存货编码")=drTongJi("存货编码")
        drNew("存货分类名称")=drTongJi("存货分类名称")
        drNew("存货名称")=drTongJi("存货名称")
        drNew("现存数量")=drTongJi("现存数量")
        drNew("可用数量")=drTongJi("可用数量")
        drNew("参考售价标准") = drTongJi("参考售价标准")
        drNew.Save
    End If
Next
Tables("存货信息表").ResumeRedraw()
DataTables("存货信息表").Save
Dim fenLei As WinForm.ComboBox = e.Form.Controls("CboFenLei")
Dim s As String  = DataTables("存货信息表").GetComboListString("存货分类名称")
fenLei.ComboList =s
Dim tv As WinForm.TreeView
tv =e.Form.Controls("TreeView1")
tv.Nodes.Clear
For Each ss As String In s.split("|")
    Dim nd As WinForm.TreeNode = tv.nodes.Add(ss)
Next
Tables("存货信息表").Filter = ""
DataTables("存货信息导入数据表").DeleteFor("")
DataTables("存货信息导入数据表").Save
DataTables("存货统计表").DeleteFor("")
DataTables("存货统计表").Save
MessageBox.Show("导入成功","提示")
代码是这么写的,一个两万多条数据的表需要十几分钟导入时间,能不能优化一下?

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


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

加入代码分别测试读取excel的时间、分组查询计算的时间、保存代码的时间。

 

一般是select、find、save比较耗时。请上传具体例子测试。


 回到顶部
美女呀,离线,留言给我吧!
做自己
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3756 威望:0 精华:0 注册:2017/8/17 17:47:00
  发帖心情 Post By:2017/9/5 14:33:00 [只看该作者]

那我获取一个表的所有行有什么好办法吗?不用select

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


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

以下是引用做自己在2017/9/5 14:33:00的发言:
那我获取一个表的所有行有什么好办法吗?不用select

 

修改和查询,不要并存 http://www.foxtable.com/webhelp/scr/2225.htm

 

 


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