Foxtable(狐表)用户栏目专家坐堂 → 不同表对比参数。


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

主题:不同表对比参数。

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
不同表对比参数。  发帖心情 Post By:2020/2/25 17:45:00 [只看该作者]

老师 能帮忙看看这个吗?搞了很久都没搞明白?
就是 库存表的产品_产品链号列与订单附表的业务往来_产品链号相同的行切订单附表的业务往来_货物状态列不是已交货的 列里面如果订单附表的订单核算_出单数量列中要有一行小于库存表库存数量列,就填出窗口,““订单编号列内容”有订单出货数量单笔大于库存量

相当于筛选出订单表的业务往来_货物状态列内容不是已交货的行,然后这些行的订单产品编号去对比库存表的库存产品编号,然后如果弹出窗口,订单表出单数量单行小于库存有的数量这些行对应的订单序号列内容,感谢 感谢 

If DataTables("库存表").Compute("sum(产品_产品链号)","采产品_产品链号='" & e.DataRow("业务往来_产品链号")  & "'") > DataTables("订单附表").Compute("sum(订单核算_出单数量)","业务往来_产品链号='" & e.DataRow("业务往来_产品链号")  & "'and 业务往来_货物状态<>'已交货')")
msgbox(““订单编号列内容”有订单出货数量单笔大于库存量)
End If '计算库存供销数量
[此贴子已经被作者于2020/2/25 17:49:52编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2180 积分:13810 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2020/2/25 19:56:00 [只看该作者]

逻辑上没问题,
但是你把这段代码写在哪里?如果有几百条记录符合条件,弹窗关到你崩溃.

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2020/2/25 20:11:00 [只看该作者]

可以这个样子吗?
自己看有没满足条件的,如果有满足条件的就填出一个窗口,
放到项目的 afteropenproject,然后项目打开后弹出自己升级的一个窗口,然后我下选择要不要显示出列表。就是不知道条件是那里不对

If DataTables("库存表").Compute("sum(库资_库存数量)","采产品_产品链号='" & e.DataRow("业务往来_产品链号")  & "'") > DataTables("订单附表").Compute("sum(订单核算_出单数量)","业务往来_产品链号='" & e.DataRow("业务往来_产品链号")  & "'and 业务往来_货物状态<>'已交货')")
    forms("可发货列表窗口").Open()
End If '计算库存供销数量
订单附订单核算_出单数量 怎么改为是对比的是内容最小的一样呀?感谢 感谢 


[此贴子已经被作者于2020/2/25 20:23:39编辑过]

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


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/25 20:29:00 [只看该作者]

afteropenproject事件没有e.datarow这种参数,表事件才有。


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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2020/2/25 20:36:00 [只看该作者]

谢谢老师,可以把这个功能放到窗口的afterload吗  感谢 感谢 

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


加好友 发短信
等级:九尾狐 帖子:2180 积分:13810 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2020/2/25 20:39:00 [只看该作者]

最好是做标记,然后筛选出来,否则你一上班就关弹窗,到下班还在关弹窗

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2020/2/25 20:54:00 [只看该作者]

放在某次窗口的afterload 里面,只有打开某个窗口才能跳出来。感谢 感谢 

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2020/2/25 21:43:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:筛选行.table

老师能在帮忙判断数量列是否有比库存还小的行吗?感谢 感谢 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200225214033.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/25 22:15:00 [只看该作者]

使用SQL处理

Dim filter As String = "Select * from {表B} where 产品序号 In (Select 产品序号 from ("
filter = filter  & " Select 产品序号,sum(库存数量) As 库存数量 from {表B} group by 产品序号) As a left join ("
filter = filter  & " Select 订单序号,sum(订单数量) As 订单数量 from {表A} where 订单状态<> '已交货' group by 订单序号) as b on a.产品序号=b.订单序号"
filter = filter  & " where  a.库存数量 > b.订单数量)"
Tables("窗口1_Table1").Fill(filter,False)

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2020/2/25 22:35:00 [只看该作者]

老师 我想到了一个方法,就是把他们的数据线集中到某个表?
就是订单核算_出单数量可以不是合计吗?可以改为读取值最小的一行的值。感谢 感谢 
If e.DataRow.IsNull("订单序号")=False Then
    Dim dr As DataRow = DataTables("库存表").Find("产品_产品链号='" & e.DataRow("业务往来_产品链号") & "'")
    If dr IsNot Nothing Then
        dr("库存表")=DataTables("订单附表").Compute("sum(订单核算_出单数量)","业务往来_产品链号='" & e.DataRow("业务往来_产品链号")  & "' and 业务往来_方式='订单'and 业务往来_货物状态<>'已交货'and 业务往来_订单性质='工作'")
    End If
End If  '计算数量最小订单

 回到顶部
总数 17 1 2 下一页