Foxtable(狐表)用户栏目专家坐堂 → 求助:“手工编码统计”遇惑,请老师释疑


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

主题:求助:“手工编码统计”遇惑,请老师释疑

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


加好友 发短信
等级:婴狐 帖子:4 积分:96 威望:0 精华:0 注册:2008/12/14 18:56:00
求助:“手工编码统计”遇惑,请老师释疑  发帖心情 Post By:2008/12/14 18:59:00 [只看该作者]

 问题1.增加二级标题后,如何手工编码统计?

示例一

假定要下面这样一个成绩表:

我们需要统计每一个科目的成绩分布范围,例如60分以下,60分以上,70分以上等等范围的人数。
首先建议一个数据表,因为考试的科目是固定的,所以这里我们不用临时表,而用数据表,设计好表之后,手工输入科目:

然后将这个表的DataColChanged设为:

Dim dr As DataRow = e.DataRow
Dim dt As DataTable =DataTables("学生成绩")
If e.DataCol.Name = "科目" And e.DataRow.IsNull("科目") = False Then
    e.DataRow("分布_60分以下") = dt.Compute("Count(姓名)", dr("科目") & " < 60")
    e.DataRow("分布_60分以上") = dt.Compute("Count(姓名)", dr("科目") & " >= 60 And " & dr("科目") & " < 70" )
    ……

……

End If

请问:如果成绩表中有二级标题(如下表格式),上段语句该如何修改?

班级

姓名

语文

数学

英语

成绩

成绩

成绩

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

问题2、双引号与连接符问题

示例三

还是统计不同产品的销售数量和金额,不过我们这次全部用一段代码完成。
将下面的代码复制到命令窗口执行即可:

'生成统计表
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("产品", GetType(String), 32)
dtb.AddDef("数量", GetType(Integer))
dtb.AddDef("金额", GetType(Double))
dtb.Build()
'填充数据
dim f As New Filler
f.SourceTable = DataTables("订单")
f.SourceCols = "产品"
f.DataTable = DataTables("统计")
f.DataCols = "产品"
f.Fill()
'统计
For Each dr As Datarow In DataTables("统计").DataRows
    dr("数量") = DataTables("订单").Compute("Sum(数量)","[产品] = '" & dr("产品") & "'")
    dr("金额") = DataTables("订单").Compute("Sum(金额)","[产品] = '" & dr("产品") & "'")
Next
MainTable= Tables("统计")

请问: " & dr("产品") & "代码中外围用“双引号”和“&…&”不解,这里涉及到相关知识?


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


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2008/12/15 8:21:00 [只看该作者]

例如:

例如要计算某个产品的销售数量,要计算的产品名称由用户输入,假定输入的结果保存在全局变量Vars("产品")中:

Dim Sum As Integer
Sum = 
DataTables("订单").Compute("Sum(数量)", "[产品] = '" & Vars("产品") & "'")

Compute的第二个参数为计算条件表达式,该表达式分为三部分:

"[产品] = '" & Vars("产品") & "'"

假定全局变量Vars("产品")的值为PD01,组合三部分的内容后,这个表达式就等效于:

"[产品] = 'PD01'"

假定表A和表B都有品名、型号两列,我们在表A中选择了一行,希望从表B中找出相同品名、规格的行:

Dim dr1 As DataRow = Tables("A").Current.DataRow
Dim
dr2 As DataRow
dr2 =
DataTables("表B").Find("[品名]  = '" & dr1("品名") & "'And [规格] = '" & dr1("规格") & "'")

上面代码的最后一行,初看非常难以理解。
为便于理解,我们首先来看看看正常的查找表达式:

"[品名] = '要找品名' And [规格] = '要找的规格'"

其中红色的部分要被dr1中的实际的品名和规格代替,所以最终的表达式成了:

"[品名]  = '" & dr1("品名") & "'And [规格] = '" & dr1("规格") & "'"

上面都是用字符型的值作为例子,表达式中字符型的值要用单引号括起来。
如果是日期型,要用符号#括起来。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/12/15 8:29:00 [只看该作者]

呵呵,标题和统计无关的,只和列名有关

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


加好友 发短信
等级:婴狐 帖子:4 积分:96 威望:0 精华:0 注册:2008/12/14 18:56:00
  发帖心情 Post By:2008/12/15 16:46:00 [只看该作者]

谢谢两位指点!FOXTABLE统计比易表优势很多,标题行可任意变化,列名不变,程序不变也能统计数据。


 回到顶部