以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教个表达式需要多列条件筛选的问题! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=115341) |
-- 作者:a2029460 -- 发布时间:2018/3/5 16:30:00 -- 请教个表达式需要多列条件筛选的问题! 商品表 【商品条码】【尺码组编号】 尺码表 【尺码编号】【尺码名】【尺码组编号】 销售流水表 【商品条码】【尺码编号】 表A销售流水表 只有一列【尺码编号】是关于尺码表B的, 可是尺码编号这一列的值非唯一的, 也就是通过建立关联在表达式列中 商品流水_尺码.尺码名称 会报错提示 子行具有多个父行。 我把关联关系换一下 又说child标记无法识别。 我看了下得2列才能找出某个商品的尺码(只有商品没尺码的才重复,因为尺码表里的编号都是00) 【尺码编号】【尺码组编号】 【尺码表】重复的原因是 这张表里包含的好多尺码组下的尺码 即尺码组A有10条尺码 尺码组B有20条尺码。。等等都在这张表里, 但是几乎每个组里都有一个尺码名称为无的,编号都是00,造成了数据非唯一,其余数据都是唯一的。 需求就是 在销售流水表里加一列尺码名称, 通过尺码名称统计。 遇到的困难: 表达式列无法求出,因为尺码表的编号的数据非唯一 想到的另一种思路是,分有尺码和没尺码统计,【尺码编号】是00的无尺码, 非00的有尺码, 有【尺码编号】的流水统计好以后, 如何添加一列把尺码名称加进来!!!
|
-- 作者:有点甜 -- 发布时间:2018/3/5 16:37:00 -- 1、你的销售流水表能否加入【尺码组编号】?如果加入了,不就能确定唯一了?
2、你尺码表能否把所有00的编号删除,就剩下一条00的?重复00有额外用处吗?
3、如果商品表、尺码表作为父表,那么就必须唯一才行,不然逻辑上都是不对的。 |
-- 作者:a2029460 -- 发布时间:2018/3/5 16:42:00 -- 我了个去 我咋没想到呢, 你前两条就够用了 多余的确实不需要加载!! 但是在编辑数据表里的过滤排序里面怎样才能只留一个00啊 我记得那是where 条件啊 |
-- 作者:有点甜 -- 发布时间:2018/3/5 16:49:00 -- 如果加载唯一数据,参考
DataTables("表A").loadfilter = "[_Identify] in (select max([_Identify]) from {表A} group by 第一列)"
你也可以不用关联、表达式列,你可以用代码动态获取或者统计
http://www.foxtable.com/webhelp/scr/1451.htm
http://www.foxtable.com/webhelp/scr/1454.htm
|
-- 作者:a2029460 -- 发布时间:2018/3/5 17:28:00 -- 现在可以统计了 但我把按各种分类统计好的表合并后 出现个错误提示 已经具有相同键的项 Dim bt As WinForm.TextBox = e.Form.Controls("TextBox1") If bt.Text = Nothing Then MessageBox.Show("请输入商品属性", "提示") Return Else If not IsNumeric(bt.Text) Then MessageBox.Show("商品属性是数字", "提示") Return End If Dim txt As String = bt.Text Dim g As New GroupTableBuilder("进货表", DataTables("ic_t_inout_store_detail")) Dim dt1 As fxDataSource g.Groups.AddDef("商品属性") g.Groups.AddDef("sheet_no") g.Groups.AddDef("barcode","","条码") g.Groups.AddDef("名称") g.Groups.AddDef("商品尺码") g.Totals.AddDef("in_qty","进货_数量","进货_数量") g.Totals.AddDef("金额", "进货_金额") g.Filter = "[sheet_no] Like \'PI%\' and [商品属性] = \'" & txt & "\'" dt1 = g.BuildDataSource() Dim g2 As New GroupTableBuilder("销售流水表", DataTables("pos_t_saleflow")) Dim dt2 As fxDataSource g2.Groups.AddDef("商品条码") g2.Groups.AddDef("商品尺码") g2.Totals.AddDef("sale_qnty", "销售_数量") g2.Totals.AddDef("实际金额", "销售_金额") g2.Filter = "[商品属性] = " & txt & " And sell_way = \'A\' And cm_no <> \'00\'" dt2 = g2.BuildDataSource() Dim g3 As New GroupTableBuilder("销售退货表", DataTables("pos_t_saleflow")) Dim dt3 As fxDataSource g3.Groups.AddDef("商品条码") g3.Groups.AddDef("商品尺码") g3.Totals.AddDef("sale_qnty", "退货_数量") g3.Totals.AddDef("实际金额", "退货_金额") g3.Filter = "[商品属性] = " & txt & " and sell_way = \'B\'" dt3 = g3.BuildDataSource() Dim g4 As New GroupTableBuilder("销售赠送表", DataTables("pos_t_saleflow")) Dim dt4 As fxDataSource g4.Groups.AddDef("商品条码") g4.Groups.AddDef("商品尺码") g4.Totals.AddDef("sale_qnty", "赠送_数量") g4.Totals.AddDef("实际金额", "赠送_金额") g4.Filter = "[商品属性] = " & txt & " and sell_way = \'C\'" dt4 = g4.BuildDataSource() dt1.Combine("barcode",dt2,"商品条码") dt1.Combine("barcode",dt3,"商品条码") dt1.Combine("barcode",dt4,"商品条码") Tables("库销存_Table1").DataSource = dt1 \'将统计结果绑定到Table With DataTables("库销存_Table1").DataCols \'用表达式列计算库存数据 .Add("库存_数量",Gettype(Integer), "IsNull([进货_数量],0) - ISNULL(销售_数量 ,0) + ISNULL(退货_数量,0) - ISNULL(赠送_数量,0)") .Add("盈亏_金额",Gettype(Double), "IsNull([销售_金额],0) - ISNULL([退货_金额 ],0) - ISNULL([进货_金额],0)") End With With Tables("库销存_Table1") .Cols("进货_金额").GrandTotal = True \'指定要合计的列 .Cols("销售_金额").GrandTotal = True .Cols("退货_金额").GrandTotal = True .Cols("赠送_金额").GrandTotal = True .Cols("盈亏_金额").GrandTotal = True .GrandTotal = True \'显示合计模式 End With 之前没有.Groups.AddDef("商品尺码")这个表达式列的时候(这个表达式就是我上面提问中需求的尺码名称), 可以统计出来。 我刚才单独Tables("库销存_Table1").DataSource = dt1 \'将统计结果绑定到Table 把dt1 换2,3,4 挨个试了一遍 都可以统计好 就是合并的时候出问题了。 合并我也没有改动啊, 咋就不能了呢
|
-- 作者:有点甜 -- 发布时间:2018/3/5 17:40:00 -- 应该是你某个表的 【商品条码】 重复了,如果重复后,就会有问题。
或者,你试试根据两列设置combine,如 http://www.foxtable.com/webhelp/scr/2392.htm
|
-- 作者:a2029460 -- 发布时间:2018/3/5 17:43:00 -- 我刚把所有的商品尺码统计列注销了 又能了 为啥这个影响啊 |
-- 作者:有点甜 -- 发布时间:2018/3/5 17:44:00 -- 应该是你某个表的 【商品条码】 重复了,如果重复后,就会有问题。
或者,你试试根据两列设置combine,如 http://www.foxtable.com/webhelp/scr/2392.htm |
-- 作者:a2029460 -- 发布时间:2018/3/6 9:18:00 -- 谢谢老师, 我按你上面说的 把另一个列添加进表达式 然后商品尺码可以表达式添加了, 然后把合并表需要的列的名字统一,不统一的想办法统一, 就成功了! |