Foxtable(狐表)用户栏目专家坐堂 → 如何在表C中找出对应的多行并自动增加到表A中


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

主题:如何在表C中找出对应的多行并自动增加到表A中

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/16 11:09:00 [显示全部帖子]

DataColChanged

 

Select Case e.DataCol.name
    Case "报料阶段", "使用工艺名称"
        If e.DataRow.isnull("报料阶段")= False AndAlso e.DataRow.isnull("使用工艺名称") = False Then
            Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
            Dim Cols2() As String = {"接收列一","接收列二","接收列三"}
            Dim drs As List(Of DataRow) = DataTables("表B").Select("报料阶段 = '" & e.DataRow("报料阶段") & "' and 工艺名称 = '" & e.DataRow("使用工艺名称") & "'")
            systemready = False
            For i As Integer = 0 To drs.count-1
                Dim dr2 As DataRow
                If i = 0 Then
                    dr2 = e.DataRow
                Else
                    dr2 = e.DataTable.addnew
                End If
                For j As Integer = 0 To Cols1.Length -1
                    dr2(Cols2(j)) = e.DataRow(Cols1(j))
                Next
               
                dr2("报料阶段") = e.DataRow("报料阶段")
                dr2("使用工艺名称") = e.DataRow("使用工艺名称")
               
            Next
            systemready = True
        End If
End Select


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/16 14:32:00 [显示全部帖子]

是不是你表名写错了?要写表C的名字

 

Dim drs As List(Of DataRow) = DataTables("工艺配方").Select("报料阶段 = '" & e.DataRow("报料阶段") & "' and 工艺名称 = '" & e.DataRow("使用工艺名称") & "'")

 

如果还不行,单独做个小例子上传上来测试。


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/16 17:09:00 [显示全部帖子]

以下是引用wangj6666在2017/5/16 16:25:00的发言:
是的,我就是用的表C的名称。做小例子上传,怎么做?我还没有试过呢,能不能给点提示!谢谢!

 

新建一个项目,把你的表A、表C数据导入,上传上来。

 

或者,直接把你的项目上传上来。


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/16 18:06:00 [显示全部帖子]

改一下

 

Select Case e.DataCol.name
    Case "配料日期"
        If e.NewValue Is Nothing Then
            e.DataRow("结算日期") = Nothing
        Else
            Dim dt As Date = e.NewValue
            If dt.Day > 25 Then '如果为25日以后的日期
                dt = new Date(dt.year,dt.month,1) '改为下个月的第一天
                dt= dt.AddMonths(1)
            End If
            e.DataRow("结算日期") = dt
        End If
End Select

Select Case e.DataCol.name
    Case "报料阶段", "使用工艺名称"
        If e.DataRow.isnull("报料阶段")= False AndAlso e.DataRow.isnull("使用工艺名称") = False Then
            Dim Cols1() As String = {"使用工序","加料序号","材料名称","用量百分比","材料干湿"}
            Dim Cols2() As String = {"使用工序","加料序号","材料名称","用量百分比","材料干湿"}
            Dim drs As List(Of DataRow) = DataTables("工艺配方").Select("报料阶段 = '" & e.DataRow("报料阶段") & "' and 使用工艺名称 = '" & e.DataRow("使用工艺名称") & "'")
            systemready = False
            For i As Integer = 0 To drs.count-1
                Dim dr2 As DataRow
                If i = 0 Then
                    dr2 = e.DataRow
                Else
                    dr2 = e.DataTable.addnew
                End If
                For j As Integer = 0 To Cols1.Length -1
                    dr2(Cols2(j)) = drs(i)(Cols1(j))
                Next
               
                dr2("报料阶段") = e.DataRow("报料阶段")
                dr2("使用工艺名称") = e.DataRow("使用工艺名称")
               
            Next
            systemready = True
        End If
End Select


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/17 14:04:00 [显示全部帖子]

8楼的例子,9楼的代码。我测试没问题。请重新输入【报料阶段】【使用工艺名称】,才能增肌行。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/17 16:43:00 [显示全部帖子]


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

 回到顶部