以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助-单元格数据合并  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187061)

--  作者:lovetoday
--  发布时间:2023/6/18 17:14:00
--  求助-单元格数据合并
老师,我的原数据表格是这样的01

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20230618170259.png
图片点击可在新窗口打开查看
而我想要的结果是下图这样的表格02

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20230618170601.png
图片点击可在新窗口打开查看
也就是说,把原表01的同一个生日(也就是日期)的运生差量、销运差量、销生差量结算到一起的,并将他们的说明一栏的并空说明合并到一栏中,请问老师,用代码如何实现或如何参考,请指教。


--  作者:有点蓝
--  发布时间:2023/6/18 20:36:00
--  
大概:

for each s as string in datatables("表A").getvalues("生日")
  dim r as row = tables("表A").addnew
  r("差量") = datatables("表A").compute("sum("差量")","生日=\'" & s & "\'")
  r("说明") = datatables("表A").GetComboListString("说明","生日=\'" & s & "\'").replace("|","")
……
next

--  作者:lovetoday
--  发布时间:2023/6/21 15:54:00
--  
老师,我接触FT的时间不长,虽然买了商业版的,但我研究半天,还真没弄出来,能否假设原数据表为:表A,终数据表为:表B,请老师帮我写下全代码,而后我再认真对比学习,谢谢老师!
--  作者:有点蓝
--  发布时间:2023/6/21 16:15:00
--  
for each s as string in datatables("表A").getvalues("生日")
  dim r as row = tables("表B").addnew
  r("运生_差量") = datatables("表A").compute("sum("运生_差量")","生日=\'" & s & "\'")
  r("运生_说明") = datatables("表A").GetComboListString("运生_说明","生日=\'" & s & "\'").replace("|","")
  r("销运_差量") = datatables("表A").compute("sum("销运_差量")","生日=\'" & s & "\'")
……
next


--  作者:lovetoday
--  发布时间:2023/6/23 9:15:00
--  
老师,我按您的这个代码做相应的表格调整后,系统提示:运生_差量 不属于 表B,您看这是什么问题,谢谢
--  作者:有点蓝
--  发布时间:2023/6/24 20:26:00
--  
说明列名不正确,自己打开表结构看看正确的列名
--  作者:lovetoday
--  发布时间:2023/6/28 12:05:00
--  
老师,我是真心解决不了这个,我把全代码给您发出来,您看看
Dim ny As WinForm.TextBox = e.Form.Controls("TextBox188")

e.form.controls("TextBox199").Text = e.form.controls("TextBox188").Text
e.form.controls("TextBox200").Text = e.form.controls("TextBox188").Text

Dim g As New GroupTableBuilder("统计表1", DataTables("明细根表"))
g.Groups.AddDef("运输审核_结算月")
g.Groups.AddDef("运输审核_生日", "生日")
g.Groups.AddDef("FZSYXCCFMC")
g.Groups.AddDef("生产信息_等级强度")
g.Groups.AddDef("FZSYXCBB")
g.Groups.AddDef("FZSYXCBZ")
g.Groups.AddDef("FZSYXCLX", "类型")
g.Groups.AddDef("FZSYXCYCSM", "异常_说明")
g.Totals.AddDef("FZSYXCYS", "运生_差量")
g.Totals.AddDef("FZSYXCXY", "销运_差量")
g.Totals.AddDef("FZSYXCXS", "销生_差量")
g.Filter = "[运输审核_结算月] = \'" & ny.text & "\' and [FZSYXCB] is not Null"
Tables("统计总表_Table175").DataSource = g.BuildDataSource()

DataTables("统计总表_Table175").DataCols.Add("运生_说明", GetType(String), 255 , "IIF([运生_差量] = 0 , Null ,IIF([类型] = \'多记\' or [类型] = \'少记\' or [类型] = \'他产\'  or [类型] = \'取样\'  or [类型] = \'报废\'  or [类型] = \'不结\',[FZSYXCCFMC]  + [FZSYXCBZ] + [类型] + [运生_差量] + \'方\' + [生产信息_等级强度] + \';\',IIF([类型] = \'多产\'  or [类型] = \'少产\'  or [类型] = \'自运\'  or [类型] = \'多签\'  or [类型] = \'少签\' ,[FZSYXCCFMC] + [类型] + [运生_差量] + \'方\' + [生产信息_等级强度] + \';\',IIF([类型] = \'剩料\' or [类型] = \'退料\' ,[FZSYXCCFMC] + [类型] + [运生_差量] + \'方\' + [FZSYXCBB] + [FZSYXCBZ], IIF([类型] = \'异日\' ,[FZSYXCCFMC] + [FZSYXCBZ] + \'运输\' + [运生_差量] + \'方\' + [生产信息_等级强度] + \';\',NuLL )))))")
DataTables("统计总表_Table175").DataCols.Add("销运_说明", GetType(String), 255 , "IIF([销运_差量] = 0 , Null ,IIF([类型] = \'多记\' or [类型] = \'少记\' or [类型] = \'他产\'  or [类型] = \'取样\'  or [类型] = \'报废\'  or [类型] = \'不结\',[FZSYXCCFMC]  + [FZSYXCBZ] + [类型] + [销运_差量] + \'方\' + [生产信息_等级强度] + \';\',IIF([类型] = \'多产\'  or [类型] = \'少产\'  or [类型] = \'自运\'  or [类型] = \'多签\'  or [类型] = \'少签\' ,[FZSYXCCFMC] + [类型] + [销运_差量] + \'方\' + [生产信息_等级强度] + \';\',IIF([类型] = \'剩料\' or [类型] = \'退料\' ,[FZSYXCCFMC] + [类型] + [销运_差量] + \'方\' + [FZSYXCBB] + [FZSYXCBZ], Null ))))")
DataTables("统计总表_Table175").DataCols.Add("销生_说明", GetType(String), 255 , "IIf([销生_差量] = 0 , Null ,IIF([类型] = \'多记\' or [类型] = \'少记\' or [类型] = \'他产\'  or [类型] = \'取样\'  or [类型] = \'报废\'  or [类型] = \'不结\',[FZSYXCCFMC]  + [FZSYXCBZ] + [类型] + [销生_差量] + \'方\' + [生产信息_等级强度] + \';\',IIF([类型] = \'多产\'  or [类型] = \'少产\'  or [类型] = \'自运\'  or [类型] = \'多签\'  or [类型] = \'少签\' ,[FZSYXCCFMC] + [类型] + [销生_差量] + \'方\' + [生产信息_等级强度] + \';\',IIF([类型] = \'剩料\' or [类型] = \'退料\' ,[FZSYXCCFMC] + [类型] + [销生_差量] + \'方\' + [FZSYXCBB] + [FZSYXCBZ], IIF([类型] = \'异日\' ,[FZSYXCCFMC] + [FZSYXCBZ] + \'销售\' + [销生_差量] + \'方\' + [生产信息_等级强度] + \';\',NuLL )))))")

Tables("统计总表_Table175").Cols("运生_差量").Move(7)
Tables("统计总表_Table175").Cols("运生_说明").Move(8)
Tables("统计总表_Table175").Cols("销运_差量").Move(9)
Tables("统计总表_Table175").Cols("销运_说明").Move(10)
Tables("统计总表_Table175").Cols("销生_差量").Move(11)
Tables("统计总表_Table175").Cols("销生_说明").Move(12)

Tables("统计总表_Table175").Cols("运输审核_结算月").Visible = False
Tables("统计总表_Table175").Cols("FZSYXCCFMC").Visible = False
Tables("统计总表_Table175").Cols("生产信息_等级强度").Visible = False
Tables("统计总表_Table175").Cols("FZSYXCBB").Visible = False
Tables("统计总表_Table175").Cols("FZSYXCBZ").Visible = False

Tables("统计总表_Table175").AutoSizeCols()

With DataTables("统计总表_Table176")
    .DataCols("第一列").Caption = "生日"
    .DataCols("第二列").Caption = "运生_差量"
    .DataCols("第三列").Caption = "运生_说明"
    .DataCols("第四列").Caption = "销运_差量"
    .DataCols("第五列").Caption = "销运_说明"
    .DataCols("第六列").Caption = "销生_差量"
    .DataCols("第七列").Caption = "销生_说明"
    .DataCols("第八列").Caption = "异常_说明"
    .BuildHeader()
End With

For Each s As String In DataTables("统计总表_Table175").getvalues("生日")
    Dim r As Row = Tables("统计总表_Table176").addnew
    r("运生_差量") = DataTables("统计总表_Table175").compute("sum(FZSYXCYS)", "生日=\'" & s & "\'")
    r("运生_说明") = DataTables("统计总表_Table175").GetComboListString("运生_说明", "生日=\'" & s & "\'").replace("|", "")
    r("销运_差量") = DataTables("统计总表_Table175").compute("sum(FZSYXCXY)", "生日=\'" & s & "\'")
    r("销运_说明") = DataTables("统计总表_Table175").GetComboListString("销运_说明", "生日=\'" & s & "\'").replace("|", "")
    r("销生_差量") = DataTables("统计总表_Table175").compute("sum(FZSYXCXS)", "生日=\'" & s & "\'")
    r("销生_说明") = DataTables("统计总表_Table175").GetComboListString("销生_说明", "生日=\'" & s & "\'").replace("|", "")
    r("异常_说明") = DataTables("统计总表_Table175").GetComboListString("异常_说明", "生日=\'" & s & "\'").replace("|", "")
Next


运行后错误的提示是:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.6.12.1
错误所在事件:窗口,统计总表,Button182,Click
详细错误信息:
未找到列 [FZSYXCYS]。

请老师,帮我看下,

--  作者:有点蓝
--  发布时间:2023/6/28 13:37:00
--  
    Dim r As Row = Tables("统计总表_Table176").addnew
    r("第一列") = DataTables("统计总表_Table175").compute("sum(运生_差量)", "生日=\'" & s & "\'")

--  作者:lovetoday
--  发布时间:2023/6/28 14:25:00
--  
老师,刚才的问题已经解决,但还有一个就是,如何在表176的第一列中显示表175的生日列数据,也就是01 02 03-31日
还有就是原表176的上面还有10行是空着的,这些数据并没有顶行显示,还要如何解决这些,请老师帮忙处理下

--  作者:有点蓝
--  发布时间:2023/6/28 14:45:00
--  
给第一列赋值生日不就行了

空行先清空表格再增加数据不就行了