Foxtable(狐表)用户栏目专家坐堂 → 关于跨表调用数据的问题


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

主题:关于跨表调用数据的问题

帅哥哟,离线,有人找我吗?
大红袍
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/13 11:52:00 [只看该作者]

 表达式列不能触发datacolchanged事件。

 

 看看 http://www.foxtable.com/help/topics/2381.htm

 


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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/17 8:57:00 [只看该作者]

请教专家:前面我请教的问题,关于跨表调用数据,我将编码复制到另外一个类似的表中,所有列的属性一致,都是数值列。然后在下面位置加上MessageBox

Select Case e.DataCol.Name
    Case "本工序_交付日期","本工序_投产日期"
        If e.DataRow.IsNull("本工序_投产日期") OrElse e.DataRow.IsNull("本工序_交付日期") Then
            e.DataRow("本工序_安排生产天数_天")=Nothing
        Else
            Dim tp As TimeSpan = e.DataRow("本工序_交付日期") - e.DataRow("本工序_投产日期")
            e.DataRow("本工序_安排生产天数_天")=tp.TotalDays+1
        End If
       
    Case "品种_杆径","品种_长度","日生产能力_杆体探伤"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        If dr.IsNull("品种_杆径") OrElse dr.IsNull("品种_长度") Then
            dr("日生产能力_杆体探伤") = Nothing
        Else
            Dim filter As String
            filter = "品种_杆径 = '" & dr("品种_杆径") & "' And 品种_长度 = '" & dr("品种_长度") & "'And 日生产能力_杆体探伤 = '" & dr("日生产能力_杆体探伤") & "'"
            MessageBox.Show(filter)
            pr = DataTables("工序能力表").Find(filter)
            MessageBox.Show(filter)
            If pr IsNot Nothing Then
                dr("日生产能力_杆体探伤") = pr("日生产能力_杆体探伤")
               
            End If
        End If
End Select

 

第一次显示结果 ”品种_杆径 = "02(φ16)"And 品种_长度 = "8.00"And 日生产能力_杆体探伤 = "0",这是显示的“排产表”中的数据,

第二次显示结果应该是"工序能力表"中的数据,而在该表中,我在“日生产能力_杆体探伤”列输入的数据为1000,但显示的结果同第一次的一样,为: ”品种_杆径 = "02(φ16)"And 品种_长度 = "8.00"And 日生产能力_杆体探伤 = "0",没有显示1000,“排产表”中的数据也没有变化。

请教问题出在哪里?

此外,如果表达式列不能触发DataColChanged事件,我应该在哪里实现上述功能(我必须保留表达式列)。

[此贴子已经被作者于2015/11/17 9:08:25编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/17 9:06:00 [只看该作者]

你写在datacolchanging事件吧?要写到datacolchanged事件。


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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/17 9:10:00 [只看该作者]

我是在DataColChanged事件中写的。

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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/17 9:20:00 [只看该作者]

还有一个问题,按照“表达式列的特殊性”一节中讲的,我的“排产表c”的父表是另外一个“排产表b”,而调用数据的表同该“排产表c”没有关联,同时,“排产表b”的该列也是表达式列,数据从父表“排产表a”调用,“表达式列的特殊性”一节中的下面的编码怎么用?

当我们在订单明细表输入数量时,订单表的数量会自动更新,但是上面的代码永远不会执行,因为数量是一个表达式列,不会触发事件。
我们需要在订单明细表的DataColChanged事件加上代码:

If e.Col.name = "数量" Then
    Dim
pr As DataRow = e.DataRow.GetParentRow("订单") '找出对应的父行

    If
pr IsNot Nothing Then
        DataTables(
"订单").DataCols("数量").RaiseDataColChanged(pr'通知系统此父行的数量列发生了改变,触发DataColChanged事件

    End If
End If

[此贴子已经被作者于2015/11/17 9:24:19编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/17 9:30:00 [只看该作者]

上传项目测试。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/17 9:30:00 [只看该作者]

或者做个例子发上来。

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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/17 9:36:00 [只看该作者]

各表关系如下图:为了减少输入工作,产品品种都从父表中继承

 

合同表→排产表a→排产表b→排产表c→排产表d→排产表e→排产表f→排产表g

     父子     父子     父子    父子     父子    父子     父

        

                   (排产表a-g)都要从( 生产能力表 )中调用数据       


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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/17 9:41:00 [只看该作者]

我的编写文件已经上传
[此贴子已经被作者于2015/11/17 10:06:48编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/17 9:45:00 [只看该作者]

 你哪个表怎么操作,要哪些表什么效果?

 回到顶部
总数 27 上一页 1 2 3 下一页