以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  不同表对比参数。  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=146524)

--  作者:yangwenghd
--  发布时间: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
--  发布时间:2020/2/25 19:56:00
--  
逻辑上没问题,
但是你把这段代码写在哪里?如果有几百条记录符合条件,弹窗关到你崩溃.

--  作者:yangwenghd
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2020/2/25 20:29:00
--  
afteropenproject事件没有e.datarow这种参数,表事件才有。


--  作者:yangwenghd
--  发布时间:2020/2/25 20:36:00
--  
谢谢老师,可以把这个功能放到窗口的afterload吗  感谢 感谢 

--  作者:sloyy
--  发布时间:2020/2/25 20:39:00
--  
最好是做标记,然后筛选出来,否则你一上班就关弹窗,到下班还在关弹窗
--  作者:yangwenghd
--  发布时间:2020/2/25 20:54:00
--  
放在某次窗口的afterload 里面,只有打开某个窗口才能跳出来。感谢 感谢 
--  作者:yangwenghd
--  发布时间:2020/2/25 21:43:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:筛选行.table

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


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


--  作者:有点蓝
--  发布时间: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
--  发布时间: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  \'计算数量最小订单