Foxtable(狐表)用户栏目专家坐堂 → 引用上行数据


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

主题:引用上行数据

美女呀,离线,留言给我吧!
zhangning
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
引用上行数据  发帖心情 Post By:2017/6/5 13:51:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:156.png
图片点击可在新窗口打开查看


老师,您好!
附图所示,显示的是电动CT从01~15工序,每次导入时一齐导入15行,(如果是别的产品,就不是15行)
这15行的前三列“制单号、流动序号、产品序号”的内容完全一样,
(如图,每次导入这一组时,会提前输入一行,)
请问老师,如何将剩余的行的前3列内容自动引入呢?

要达到的效果是:

1  201706-001 01 201706-001-01
2  201706-001 01 201706-001-01
3  201706-001 01 201706-001-01
4  201706-001 01 201706-001-01

......
15  201706-001 01 201706-001-01

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/5 14:05:00 [只看该作者]

参考

 

Dim cs() As String = {"第一列", "第二列", "第三列"}
Dim t As Table = CurrentTable
For Each c As String In cs
    For i As Integer = 1 To t.Rows.count-1
        If t.Rows(i).IsNull(c) Then
            t.Rows(i)(c) = t.Rows(i-1)(c)
        End If
    Next
Next


 回到顶部
美女呀,离线,留言给我吧!
zhangning
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2017/6/5 14:24:00 [只看该作者]

谢谢老师,
我用的导入工程代码是:
Select Case e.DataCol.Name
    Case "部品ID"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("部品ID") Then
            dr("工序序号") = Nothing
            dr("工程") = Nothing
        Else
            Dim filter As String
            filter = "部品ID = '" & dr("部品ID") & "' and 工序序号 Is Not null"
            Dim drs As List(Of DataRow) = DataTables("工程和工时").Select(filter, "工序序号")
            Systemready = False
            For i As Integer = 0 To drs.count - 1
                If i > 0 Then
                    dr = e.DataTable.addnew()
                End If
                Dim pr = drs(i)
                dr("部品ID") = pr("部品ID")
                dr("工序序号") = pr("工序序号")
                dr("工程") = pr("工程")
                dr("备注") = pr("备注")
                dr("投入数量") = "1"
                dr("任务名称") = pr("部品ID") + " " + pr("备注")
                dr("工程耗时H") = pr("装") / 60
                
            Next
            Systemready = True
        End If
End Select

想要的结果是每次导入时就引用01序相对应的三列,所以,每次导入时的需要不一样,

如下图:

图片点击可在新窗口打开查看此主题相关图片如下:157.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/5 14:31:00 [只看该作者]

呃,同理,都是直接赋值就可以了的啊

 

dr("制单号") = pr("制单号")

dr("流动序号") = pr("流动序号")

 

或者

 

dr("制单号") = e.DataRow("制单号")

dr("流动序号") = e.DataRow("流动序号")

[此贴子已经被作者于2017/6/5 14:32:38编辑过]

 回到顶部
美女呀,离线,留言给我吧!
zhangning
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2017/6/5 14:51:00 [只看该作者]

老师,每次导入时,是导入一个组合,需要在这个组合内起到以下代码的效果,
Dim cs() As String = {"第一列", "第二列", "第三列"}
Dim t As Table = CurrentTable
For Each c As String In cs
    For i As Integer = 1 To t.Rows.count-1
        If t.Rows(i).IsNull(c) Then
            t.Rows(i)(c) = t.Rows(i-1)(c)
        End If
    Next
Next
以上代码的效果时整个表都是引用上行前三列的数据了,是不是需要加入范围的限制呢?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/5 14:55:00 [只看该作者]

看4楼,直接赋值不行么?

 

dr("制单号") = e.DataRow("制单号")

dr("流动序号") = e.DataRow("流动序号")


 回到顶部
美女呀,离线,留言给我吧!
zhangning
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:513 积分:3355 威望:0 精华:0 注册:2016/4/14 16:56:00
  发帖心情 Post By:2017/6/5 15:48:00 [只看该作者]

解决了,谢谢老师


 回到顶部