以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于查询与统计的求助-20:05上传的例子  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90412)

--  作者:huangfanzi
--  发布时间:2016/9/12 11:12:00
--  [求助]关于查询与统计的求助-20:05上传的例子
在窗口中的TABLE表,我先通过代码:
Tables(e.Form.Name & "_Table1").Fill("s elect 卷号,牌号,厚度,宽度,重量 ...... from {工序合并表} ......
If DataTables(e.Form.Name & "_Table1").datacols.Contains("长度") Then
Else
    DataTables(e.Form.Name & "_Table1").DataCols.Add("长度", Gettype(Double))
End If
For Each r As Row In Tables(e.Form.Name & "_table1").Rows
    Dim dr密度 As DataRow
    dr密度 = _dt密度表.SQLFind("牌号 = \'" &  r("牌号") & "\'" )
    If dr密度 IsNot Nothing  Then
        r("长度") = r("重量")/r("厚度")/r("宽度")/dr密度("密度")*1000 ‘根据密度、厚度、宽度算出长度的公式
    Else r("长度") = Nothing
    End If
Next
上述代码就生成了如下结构的表:
卷号 牌号 厚度 宽度 重量 长度
卷1 牌号A 0.1  100  200 1000
卷2 牌号A 0.1  200  200 500
卷3 牌号B 0.1  300  500 300

现在希望得到一张既汇总又能计算长度的表,如下:
牌号 长度
牌号A 1500
牌号B 300
请教老师应该如何写s elect语句,由于长度这个字段是根据每个卷的密度、厚度、宽度实时增加及计算的,所以不会写了。

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


[此贴子已经被作者于2016/9/12 20:06:02编辑过]

--  作者:有点蓝
--  发布时间:2016/9/12 11:43:00
--  
关联多个表并使用表达式列,参考http://www.foxtable.com/webhelp/scr/1626.htm

具体上例子测试

--  作者:huangfanzi
--  发布时间:2016/9/12 20:09:00
--  
我在1楼上传了例子,请老师看看。
--  作者:有点蓝
--  发布时间:2016/9/12 20:35:00
--  
Dim b As New SQLGroupTableBuilder("统计表1","工序合并表")

b.AddTable("工序合并表","牌号","密度表","牌号") \'添加统计表
b.Groups.AddDef("工序") \'根据订单表产品ID分组
b.Totals.AddExp("金额","重量 / 厚度 / 宽度 / 密度 * 1000")
e.Form.Controls("Table1").Table.datasource = b.BuildDataSource