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


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

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

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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
关于跨表调用数据的问题  发帖心情 Post By:2015/11/13 10:46: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:06:53编辑过]

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


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

 1、代码没错,你修改这两列的值了吗?或者你重置列了吗?修改值,才会执行代码。

 

 2、你可以加入msgbox,弹出看是否进入了事件,进入执行了最后的代码。


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


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

我修改了值,而且新录入了值,问题没有解决,我再看看加入msgbox的办法

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


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

谢谢您,继续请教:

我在编码中进入了msgbox,但没有弹出对话框

如下:

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("品种_长度") & "'"
            pr = DataTables("工序能力表").Find(filter)
            If pr IsNot Nothing Then
                dr("日生产能力_浸漆") = pr("日生产能力_浸漆")
                MessageBox.Show("一点不难!")
           End If
        End If
End Select


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


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

再往其它地方加入msgbox。


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


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

如果只是最后的不触发,就是条件不满足,查不到数据。

 

 filter = "品种_杆径 = '" & dr("品种_杆径") & "' And 品种_长度 = '" & dr("品种_长度") & "'"


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


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

谢谢,我再试试

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


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

继续请教:

我在编码中将msgbox对话框加入到紫色位置,有对话框弹出,但加入到蓝色位置则没有对话框弹出

如下:

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

             MessageBox.Show("一点不难!")
        End If
       
    Case "品种_杆径","品种_长度"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        If dr.IsNull("品种_杆径") OrElse dr.IsNull("品种_长度") Then
            dr("日生产能力_浸漆") = Nothing
             MessageBox.Show("一点不难!")
        Else
            Dim filter As String
            filter = "品种_杆径 = '" & dr("品种_杆径") & "' And 品种_长度 = '" & dr("品种_长度") & "'"
            pr = DataTables("工序能力表").Find(filter)
            If pr IsNot Nothing Then
                dr("日生产能力_浸漆") = pr("日生产能力_浸漆")
                 MessageBox.Show("一点不难!")
                End If
        End If
End Select


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


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

1、修改 品种_杆径 、 品种_长 两列的内容

 

2、msgbox加入

 

filter = "品种_杆径 = '" & dr("品种_杆径") & "' And 品种_长度 = '" & dr("品种_长度") & "'"

msgbox(filter)


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


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

加了msgbox(filter)依然没有反应,删除了原有的行,重新写入,没有反应

两个表的“品种_杆径”和“品种_长度”列都是字符串,但“生产安排表”的相应列是表达式列,“工序能力表”的相应列是数值列,“日生产能力_浸漆”列一样,都是数值列,为整数型

这里有问题吗?


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