Foxtable(狐表)用户栏目专家坐堂 → [求助]号码段分组统计


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

主题:[求助]号码段分组统计

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


加好友 发短信
等级:童狐 帖子:298 积分:4225 威望:0 精华:0 注册:2009/11/4 16:30:00
  发帖心情 Post By:2011/8/3 15:08:00 [只看该作者]

"hhbb"您写的代码真是太棒了.先收藏学习.

另外请问这句代码:"sql+ = "select 序号,Min(起号) as 起号,Max(止号) as 止号,"是什么意思?

还有这个"+"和"as"的应用在狐表帮助文件里好像找不到,能请教一下吗?

 

[此贴子已经被作者于2011-8-3 15:11:10编辑过]

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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/8/3 15:16:00 [只看该作者]

[+]---叠加,[as]---重新命名

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


加好友 发短信
等级:童狐 帖子:298 积分:4225 威望:0 精华:0 注册:2009/11/4 16:30:00
  发帖心情 Post By:2011/8/3 16:12:00 [只看该作者]

"hhbb"您好!非常感谢您的帮助.

您的代码在我实际应用中遇到了一个问题:

"表A"中前3行都是不连续的号码段.但在"表B"中形成的是一行分组.现将文件上传,看看有没有办法?

 (如果下一行的起号跟上一行的止号不连续,就另起一分组行进行统计)

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:号段分组统计.rar

   

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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/8/3 18:50:00 [只看该作者]

用窗口表试试:

Dim n,s1,s2,s3,s4 As Double
Dim sql As String
Dim t = Tables("窗口1_Table1")
Dim r As Row
sql = "select * from(select Len(起号) & Left(起号,1) as 序号,起号,止号,张数 as 全部单证张数,iif(单证状态 ='售单',张数,null) as 售单张数,iif(单证状态 In('退单','废单'),张数,null) as 退废单张数,iif(单证状态 ='售单',保费,null) as 售单金额 from{表A} where 起号 >'' ) order by  序号 ,起号"

t.Fill(sql,True)

For n  = 0 To T.Rows.count-1
    If  n = 0  Then
        T.Rows(n)("序号") =T.Rows(n)("序号") & "-0"
    ElseIf  Val(T.Rows(n)("起号")) = Val(T.Rows(n-1)("止号"))+1 Then
        T.Rows(n)("序号") =T.Rows(n-1)("序号")
    Else
        T.Rows(n)("序号") =T.Rows(n)("序号") & "-" & n
    End If
    
Next
Dim b As New GroupTableBuilder("统计表1",DataTables("窗口1_Table1"))
b.Groups.AddDef("序号")
b.Totals.AddDef("起号",AggregateEnum.Min)
b.Totals.AddDef("止号",AggregateEnum.Max)
b.Totals.AddDef("全部单证张数")
b.Totals.AddDef("售单张数")
b.Totals.AddDef("退废单张数")
b.Totals.AddDef("售单金额")
t.DataSource = b.BuildDataSource()

n =0
For Each r  In t.Rows
    r("序号") = n+1
    If  r("退废单张数") = 0 Then
        r("退废单张数") =Nothing
    End If
    s1+=r("全部单证张数")
    s2+ = r("售单张数")
    s3+= r("退废单张数")
    s4+ = r("售单金额")
    n+ = 1
Next
r=t.addnew
r("序号") = "合计"
r("全部单证张数") = s1
r("售单张数") = s2
r("退废单张数") = s3
r("售单金额") = s4

t.AutoSizeCols

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


加好友 发短信
等级:童狐 帖子:298 积分:4225 威望:0 精华:0 注册:2009/11/4 16:30:00
  发帖心情 Post By:2011/8/3 21:29:00 [只看该作者]

"hhbb"真的好佩服您!

经多次验证,准确度100%.

只可惜我目前对您编写的代码有好多句还看不懂.

先收藏起来.

 


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/8/4 9:27:00 [只看该作者]

延续9楼的思路,不过表A增一序号加以分组:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目6.table

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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2011/8/4 23:21:00 [只看该作者]

以下是引用hhbb在2011-8-3 18:50:00的发言:
用窗口表试试:

Dim n,s1,s2,s3,s4 As Double
Dim sql As String
Dim t = Tables("窗口1_Table1")
Dim r As Row
sql = "select * from(select Len(起号) & Left(起号,1) as 序号,起号,止号,张数 as 全部单证张数,iif(单证状态 ='售单',张数,null) as 售单张数,iif(单证状态 In('退单','废单'),张数,null) as 退废单张数,iif(单证状态 ='售单',保费,null) as 售单金额 from{表A} where 起号 >'' ) order by  序号 ,起号"

t.Fill(sql,True)

For n  = 0 To T.Rows.count-1
    If  n = 0  Then
        T.Rows(n)("序号") =T.Rows(n)("序号") & "-0"
    ElseIf  Val(T.Rows(n)("起号")) = Val(T.Rows(n-1)("止号"))+1 Then
        T.Rows(n)("序号") =T.Rows(n-1)("序号")
    Else
        T.Rows(n)("序号") =T.Rows(n)("序号") & "-" & n
    End If
    
Next
Dim b As New GroupTableBuilder("统计表1",DataTables("窗口1_Table1"))
b.Groups.AddDef("序号")
b.Totals.AddDef("起号",AggregateEnum.Min)
b.Totals.AddDef("止号",AggregateEnum.Max)
b.Totals.AddDef("全部单证张数")
b.Totals.AddDef("售单张数")
b.Totals.AddDef("退废单张数")
b.Totals.AddDef("售单金额")
t.DataSource = b.BuildDataSource()

n =0
For Each r  In t.Rows
    r("序号") = n+1
    If  r("退废单张数") = 0 Then
        r("退废单张数") =Nothing
    End If
    s1+=r("全部单证张数")
    s2+ = r("售单张数")
    s3+= r("退废单张数")
    s4+ = r("售单金额")
    n+ = 1
Next
r=t.addnew
r("序号") = "合计"
r("全部单证张数") = s1
r("售单张数") = s2
r("退废单张数") = s3
r("售单金额") = s4

t.AutoSizeCols

起止号不是排序的状态。


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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2011/8/4 23:53:00 [只看该作者]

14楼的结果中,序号7、8是不是有点问题??? 


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

 


和16楼的结果中,序号6、7是不是有点问题??? 


图片点击可在新窗口打开查看此主题相关图片如下:未命名=.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-8-5 0:15:13编辑过]

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


加好友 发短信
等级:童狐 帖子:298 积分:4225 威望:0 精华:0 注册:2009/11/4 16:30:00
  发帖心情 Post By:2011/8/6 17:49:00 [只看该作者]

大概是起号中有重复号的问题.


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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/8/6 19:44:00 [只看该作者]

原文件中數據輸入有點不對所至:
82行:0006  2197808-2197825    售单
83行:0007  2197809-2197809    退单

图片点击可在新窗口打开查看此主题相关图片如下:000.gif
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-8-6 19:47:37编辑过]

 回到顶部
总数 22 上一页 1 2 3 下一页