Foxtable(狐表)用户栏目专家坐堂 → 请教个表达式需要多列条件筛选的问题!


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

主题:请教个表达式需要多列条件筛选的问题!

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


加好友 发短信
等级:幼狐 帖子:124 积分:1116 威望:0 精华:0 注册:2016/2/24 17:44:00
请教个表达式需要多列条件筛选的问题!  发帖心情 Post By:2018/3/5 16:30:00 [只看该作者]

商品表       【商品条码】【尺码组编号】
尺码表       【尺码编号】【尺码名】【尺码组编号】
销售流水表 【商品条码】【尺码编号】

表A销售流水表  只有一列【尺码编号】是关于尺码表B的, 可是尺码编号这一列的值非唯一的, 也就是通过建立关联在表达式列中 商品流水_尺码.尺码名称 会报错提示 子行具有多个父行。 我把关联关系换一下  又说child标记无法识别。    我看了下得2列才能找出某个商品的尺码(只有商品没尺码的才重复,因为尺码表里的编号都是00)  【尺码编号】【尺码组编号】

【尺码表】重复的原因是 这张表里包含的好多尺码组下的尺码  即尺码组A有10条尺码   尺码组B有20条尺码。。等等都在这张表里, 但是几乎每个组里都有一个尺码名称为无的,编号都是00,造成了数据非唯一,其余数据都是唯一的。 

需求就是 在销售流水表里加一列尺码名称, 通过尺码名称统计。
遇到的困难: 表达式列无法求出,因为尺码表的编号的数据非唯一

想到的另一种思路是,分有尺码和没尺码统计,【尺码编号】是00的无尺码, 非00的有尺码,  有【尺码编号】的流水统计好以后, 如何添加一列把尺码名称加进来!!!  

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


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

1、你的销售流水表能否加入【尺码组编号】?如果加入了,不就能确定唯一了?

 

2、你尺码表能否把所有00的编号删除,就剩下一条00的?重复00有额外用处吗?

 

3、如果商品表、尺码表作为父表,那么就必须唯一才行,不然逻辑上都是不对的。


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


加好友 发短信
等级:幼狐 帖子:124 积分:1116 威望:0 精华:0 注册:2016/2/24 17:44:00
  发帖心情 Post By:2018/3/5 16:42:00 [只看该作者]

我了个去 我咋没想到呢,  你前两条就够用了  多余的确实不需要加载!!  但是在编辑数据表里的过滤排序里面怎样才能只留一个00啊  我记得那是where 条件啊

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


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

如果加载唯一数据,参考

 

DataTables("表A").loadfilter = "[_Identify] in (select max([_Identify]) from {表A} group by 第一列)"
DataTables("表A").load

 

你也可以不用关联、表达式列,你可以用代码动态获取或者统计

 

http://www.foxtable.com/webhelp/scr/1451.htm

 

http://www.foxtable.com/webhelp/scr/1454.htm

 


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


加好友 发短信
等级:幼狐 帖子:124 积分:1116 威望:0 精华:0 注册:2016/2/24 17:44:00
  发帖心情 Post By: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 挨个试了一遍 都可以统计好  就是合并的时候出问题了。  合并我也没有改动啊,  咋就不能了呢

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


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

应该是你某个表的 【商品条码】 重复了,如果重复后,就会有问题。

 

或者,你试试根据两列设置combine,如 http://www.foxtable.com/webhelp/scr/2392.htm

 


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


加好友 发短信
等级:幼狐 帖子:124 积分:1116 威望:0 精华:0 注册:2016/2/24 17:44:00
  发帖心情 Post By:2018/3/5 17:43:00 [只看该作者]

我刚把所有的商品尺码统计列注销了 又能了  为啥这个影响啊

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


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

应该是你某个表的 【商品条码】 重复了,如果重复后,就会有问题。

 

或者,你试试根据两列设置combine,如 http://www.foxtable.com/webhelp/scr/2392.htm


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


加好友 发短信
等级:幼狐 帖子:124 积分:1116 威望:0 精华:0 注册:2016/2/24 17:44:00
  发帖心情 Post By:2018/3/6 9:18:00 [只看该作者]

谢谢老师, 我按你上面说的  把另一个列添加进表达式 然后商品尺码可以表达式添加了, 然后把合并表需要的列的名字统一,不统一的想办法统一,  就成功了!

 回到顶部