Foxtable(狐表)用户栏目专家坐堂 → [求助]这样的综合汇总怎样做呢?


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

主题:[求助]这样的综合汇总怎样做呢?

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


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

 这个意思?

 

Dim dt As DataTable
Dim cmd As new SQLCommand
cmd.CommandText = "Select Distinct {表A}.领料日期, {表A}.基材型号, {表A}.基材规格, {表A}.厂商代号, {表A}.投料件数, {表A}.投料重量, {表B}.客户, {表c}.生产类型, {表B}.产品型号, {表B}.产品规格 "
cmd.CommandText &= " From ({表A} Inner JOIN {表B} ON {表B}.[生产单号] = {表A}.[生产单号]) Inner JOIN {表C} ON {表C}.[生产单号] = {表A}.[生产单号] where {表C}.已完成 = true"
dt = cmd.ExecuteReader
dt.DataCols.Add("一等品出货重量", Gettype(Integer))
dt.DataCols.Add("二等品出货重量", Gettype(Integer))
dt.DataCols.Add("一等品库存", Gettype(Integer))
dt.DataCols.Add("二等品库存", Gettype(Integer))
dt.DataCols.Add("单边库存", Gettype(Integer))
dt.DataCols.Add("已记账", Gettype(Boolean))
Dim filter As String = ""
Dim ed As Date = e.Form.Controls("结束日期").Value
Dim sd As Date = e.Form.Controls("开始日期").value
If sd <> Nothing Then
    filter &= " and 日期 >= #" & sd & "#"
End If
If ed <> Nothing Then
    filter &= " and 日期 <= #" & ed & "# "
End If
For Each dr As DataRow In dt.DataRows
    dr("一等品出货重量") = DataTables("表B").Compute("sum(每箱净重)", "产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = true and 等级 = '一等品' " & filter)
    dr("二等品出货重量") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = true and 等级 = '二等品' " & filter)
    dr("一等品库存") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = false and 等级 = '一等品' " & filter)
    dr("二等品库存") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = false and 等级 = '二等品' " & filter)
    dr("单边库存") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = false and 等级 = '单边' " & filter)
    dr("已记账") = True
Next
e.Form.Controls("Table1").Table.Datasource = dt


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


加好友 发短信
等级:二尾狐 帖子:581 积分:4989 威望:0 精华:0 注册:2014/6/12 14:55:00
  发帖心情 Post By:2014/9/21 21:28:00 [只看该作者]

可能我没表达清楚我的需求,就是在生成统计表时,去以表B的时间,以及表C已完成列为true,表C已记账列为false的数据,当表格生成的同时,表C中的已记账列变成true

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


加好友 发短信
等级:二尾狐 帖子:581 积分:4989 威望:0 精华:0 注册:2014/6/12 14:55:00
  发帖心情 Post By:2014/9/21 21:37:00 [只看该作者]

Dim dt As DataTable
Dim cmd As new SQLCommand
cmd.CommandText = "Select Distinct {表A}.领料日期, {表A}.基材型号, {表A}.基材规格, {表A}.厂商代号, {表A}.投料件数, {表A}.投料重量, {表B}.客户, {表c}.生产类型, {表B}.产品型号, {表B}.产品规格 "
cmd.CommandText &= " From ({表A} Inner JOIN {表B} ON {表B}.[生产单号] = {表A}.[生产单号]) Inner JOIN {表C} ON {表C}.[生产单号] = {表A}.[生产单号] where {表C}.已完成 = true &
{表C}.已记账 = false"

dt = cmd.ExecuteReader
dt.DataCols.Add("一等品出货重量", Gettype(Integer))
dt.DataCols.Add("二等品出货重量", Gettype(Integer))
dt.DataCols.Add("一等品库存", Gettype(Integer))
dt.DataCols.Add("二等品库存", Gettype(Integer))
dt.DataCols.Add("单边库存", Gettype(Integer))
dt.DataCols.Add("已记账", Gettype(Boolean))
Dim filter As String = ""
Dim ed As Date = e.Form.Controls("结束日期").Value
Dim sd As Date = e.Form.Controls("开始日期").value
If sd <> Nothing Then
    filter &= " and 日期 >= #" & sd & "#"
End If
If ed <> Nothing Then
    filter &= " and 日期 <= #" & ed & "# "
End If
For Each dr As DataRow In dt.DataRows
    dr("一等品出货重量") = DataTables("表B").Compute("sum(每箱净重)", "产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = true and 等级 = '一等品' " & filter)
    dr("二等品出货重量") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = true and 等级 = '二等品' " & filter)
    dr("一等品库存") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = false and 等级 = '一等品' " & filter)
    dr("二等品库存") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = false and 等级 = '二等品' " & filter)
    dr("单边库存") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = false and 等级 = '单边' " & filter)
    dim dr1 as datarow = datatables("表C").find("生产单号 = '" & dr("生产单号") &"'")

    dr1("已记账") = True
Next
e.Form.Controls("Table1").Table.Datasource = dt


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


加好友 发短信
等级:二尾狐 帖子:581 积分:4989 威望:0 精华:0 注册:2014/6/12 14:55:00
  发帖心情 Post By:2014/9/21 21:38:00 [只看该作者]

上面这样写行吗?

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


加好友 发短信
等级:二尾狐 帖子:581 积分:4989 威望:0 精华:0 注册:2014/6/12 14:55:00
  发帖心情 Post By:2014/9/21 21:39:00 [只看该作者]

提示错误:
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.9.2.1
错误所在事件:
详细错误信息:
标准表达式中数据类型不匹配。

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


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

 这个意思?

 

Dim dt As DataTable
Dim cmd As new SQLCommand
cmd.CommandText = "Select Distinct {表A}.生产单号,{表A}.领料日期, {表A}.基材型号, {表A}.基材规格, {表A}.厂商代号, {表A}.投料件数, {表A}.投料重量, {表B}.客户, {表c}.生产类型, {表B}.产品型号, {表B}.产品规格 "
cmd.CommandText &= " From ({表A} Inner JOIN {表B} ON {表B}.[生产单号] = {表A}.[生产单号]) Inner JOIN {表C} ON {表C}.[生产单号] = {表A}.[生产单号]"
dt = cmd.ExecuteReader
dt.DataCols.Add("一等品出货重量", Gettype(Integer))
dt.DataCols.Add("二等品出货重量", Gettype(Integer))
dt.DataCols.Add("一等品库存", Gettype(Integer))
dt.DataCols.Add("二等品库存", Gettype(Integer))
dt.DataCols.Add("单边库存", Gettype(Integer))

Dim filter As String = ""
Dim ed As Date = e.Form.Controls("结束日期").Value
Dim sd As Date = e.Form.Controls("开始日期").value
If sd <> Nothing Then
    filter &= " and 日期 >= #" & sd & "#"
End If
If ed <> Nothing Then
    filter &= " and 日期 <= #" & ed & "# "
End If
For Each dr As DataRow In dt.DataRows
    dr("一等品出货重量") = DataTables("表B").Compute("sum(每箱净重)", "产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = true and 等级 = '一等品'" & filter)
    dr("二等品出货重量") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = true and 等级 = '二等品'" & filter)
    dr("一等品库存") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = false and 等级 = '一等品'" & filter)
    dr("二等品库存") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = false and 等级 = '二等品'" & filter)
    dr("单边库存") = DataTables("表B").Compute("sum(每箱净重)","产品型号 = '" & dr("产品型号") & "' and 产品规格 = '" & dr("产品规格") & "' and 已出货 = false and 等级 = '单边'" & filter)
    DataTables("表C").ReplaceFor("已记账", True, "生产单号 = '" & dr("生产单号") & "' and 已完成 = true")
Next
e.Form.Controls("Table1").Table.Datasource = dt


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


加好友 发短信
等级:二尾狐 帖子:581 积分:4989 威望:0 精华:0 注册:2014/6/12 14:55:00
  发帖心情 Post By:2014/9/21 22:00:00 [只看该作者]

后面的一段replacefor实现了生成报表后,已记账=true的功能,但是生成报表的条件增加了,统计表C的已完成列=true,同时已记账列=false的数据,我下面红色部分那样写行吗?

Dim dt As DataTable
Dim cmd As new SQLCommand
cmd.CommandText = "Select Distinct {表A}.领料日期, {表A}.基材型号, {表A}.基材规格, {表A}.厂商代号, {表A}.投料件数, {表A}.投料重量, {表B}.客户, {表c}.生产类型, {表B}.产品型号, {表B}.产品规格 "
cmd.CommandText &= " From ({表A} Inner JOIN {表B} ON {表B}.[生产单号] = {表A}.[生产单号]) Inner JOIN {表C} ON {表C}.[生产单号] = {表A}.[生产单号] where {表C}.已完成 = true &
{表C}.已记账 = false"

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


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

  可以。

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


加好友 发短信
等级:二尾狐 帖子:581 积分:4989 威望:0 精华:0 注册:2014/6/12 14:55:00
  发帖心情 Post By:2014/9/21 22:10:00 [只看该作者]

提示错误:
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.9.2.1
错误所在事件:
详细错误信息:
标准表达式中数据类型不匹配。

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


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

cmd.CommandText = "Select Distinct {表A}.生产单号,{表A}.领料日期, {表A}.基材型号, {表A}.基材规格, {表A}.厂商代号, {表A}.投料件数, {表A}.投料重量, {表B}.客户, {表c}.生产类型, {表B}.产品型号, {表B}.产品规格 "
cmd.CommandText &= " From ({表A} Inner JOIN {表B} ON {表B}.[生产单号] = {表A}.[生产单号]) Inner JOIN {表C} ON {表C}.[生产单号] = {表A}.[生产单号] where {表C}.已完成 = true and {表C}.已记账 = false"

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