Foxtable(狐表)用户栏目专家坐堂 → 能否补齐“未交数量”


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

主题:能否补齐“未交数量”

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
能否补齐“未交数量”  发帖心情 Post By:2015/5/13 11:24:00 [显示全部帖子]

现有“出库明细表”有2个订单的6个出库单号的“未交数量”为空值
第一个问题:
'加载未交数量为空的数据
DataTables("出库明细表").LoadFilter = "[未交数量] Is Null"
DataTables("出库明细表").Load
DataTables("出库明细表").LoadChildren("订单明细表", "客户订单号", "客户订单号")

‘这样利用关联子表去加载父表的写法是否有错?因为“订单_出库”关联字段为二个:客户订单号与物料编号。

第二个问题:
为了补齐这6行数据,写了以下代码:
SystemReady = False

For Each r As Row In Tables("订单明细表").rows   ’经上述加载后,只保留出库明细中未交数量为空值的数据
    Dim ss,dd,ee As Integer
    For Each r2 As Row In Tables("订单明细表.出库明细表").rows   ‘对关联表的行进行操作
        If ss = 0 Then                                                           '第一次循环直接行到订单数量
            r2("未交数量") = r("订单数量")
        Else
            r2("未交数量") = ee - dd  '上次未交一上次实送数量
        End If
        dd  =  r2("实交数量")
        ee = r2("未交数量")
        ss = ss +1
    Next
Next
SystemReady = True
MessageBox.Show("补齐未交数量")

但上述结果不对,是不是不能对关联表的行进行操作?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:补齐数量.table

[此贴子已经被作者于2015/5/13 11:26:51编辑过]

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2015/5/13 11:53:00 [显示全部帖子]

对,第二个问题是这样。但是计算结果出错。
但是,第一个问题改了后,反而出错了:

'加载未交数量为空的数据
DataTables("出库明细表").LoadFilter = "[未交数量] Is Null"
DataTables("出库明细表").Load
DataTables("出库明细表").LoadChildren("订单明细表","[客户订单号]+[物料编号]","[客户订单号]+[物料编号]")


.NET Framework 版本:2.0.50727.5477
Foxtable 版本:2014.11.11.1
错误所在事件:加载[订单明细表]失败!
详细错误信息:
语法错误。 在查询表达式 '([客户订单号]+[物料编号] in (Select DISTINCT [[客户订单号]+[物料编号]] F rom  (Select [_Identify], * F rom [~TMPCLP出库明细表] Where ([未交数量] Is Null)) FoxTempaX))' 中。


 For Each r2 As DataRow In  r.DataRow.GetChildRows("出库明细表")

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2015/5/13 12:22:00 [显示全部帖子]

1、不知道为何,前一个关联列少一个“[”就能执行了,我以为大师漏写了。

2、出库明细表的未交数量:
    指还没有处理本次出库前,应该出货的数量,即如果是第一次出货,则直接为该订单-产品编号的订单数量
   以后是上次的未交数量,减去上次的出货数量。

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2015/5/13 12:36:00 [显示全部帖子]

‘加入数值初始值就对了 。

SystemReady = False
For Each r As Row In Tables("订单明细表").rows
    Dim ss,dd,ee As Integer
   ss = 0
   dd = 0
   ee = 0
  
   For Each r2 As DataRow In  r.DataRow.GetChildRows("出库明细表")
        If ss = 0 Then                      '第一次循环直接到订单数量
            r2("未交数量") = r("订单数量")
        Else
            r2("未交数量") = ee - dd  '上次未交一上次实送数量
        End If
   

        dd  =  r2("实交数量")
        ee = r2("未交数量")
        ss = ss +1
    Next
Next
SystemReady = True
MessageBox.Show("补齐未交数量")

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2015/5/13 19:10:00 [显示全部帖子]

请版主解释一下从子表加载父表数据时,出现二个列关联情况下,
前一个关联要各去掉一个中括号,这些在帮助中有提到吗?

DataTables("出库明细表").LoadFilter = "[未交数量] Is Null"
DataTables("出库明细表").Load
DataTables("出库明细表").LoadChildren("订单明细表", "客户订单号]+[物料编号", "[客户订单号]+[物料编号]")

这种只写一半中括号的写法是第一次遇到。

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2015/5/13 20:08:00 [显示全部帖子]

我只知道在SQL中字段要加前后中括号,象这样只在中间加中括号,确实不能理解,只是记住这个用法了,谢谢!

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


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2015/5/13 21:02:00 [显示全部帖子]

哦仔细看了下红版主的解释,觉得是合成SQL语句前,本身的格式已包含了前后二个中括号,所以自己的参数就要去掉这二个中括号,理解对吗?


[此贴子已经被作者于2015/5/14 8:30:46编辑过]

 回到顶部