Foxtable(狐表)用户栏目专家坐堂 → 求教: 复制行不成功


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

主题:求教: 复制行不成功

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


加好友 发短信
等级:婴狐 帖子:40 积分:317 威望:0 精华:0 注册:2020/5/8 10:10:00
求教: 复制行不成功  发帖心情 Post By:2020/6/10 20:56:00 [只看该作者]

入库登记表中增加记录后,希望将记录自动添加到"物资明细"表中,代码如下:

If e.DataCol.Name = "piao据号"  Then
          Dim nma() As String = {"物资名称","物资编号","物资类别","保存地点","入库总量","品牌","规格","单位"} 'A表数据来源列
          Dim nmb() As String = {"物资名称","物资编号","物资类别","保存地点","入库总量","品牌","规格","单位"} 'B表数据接收列
          Dim ddd As Row = Tables("物资明细").AddNew
            For i As Integer = 0 To nma.Length - 1
          ddd(nmb(i)) = e.DataRow(nma(i))
         Next
End If

但就是不能实现行数据复制,不得其解.请老师指点.谢谢


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


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2020/6/10 21:02:00 [只看该作者]

条件满足了吗?
messagebox.show(e.DataCol.Name)
If e.DataCol.Name = "piao据号"  Then
          Dim nma() As String = {"物资名称","物资编号","物资类别","保存地点","入库总量","品牌","规格","单位"} 'A表数据来源列
          Dim nmb() As String = {"物资名称","物资编号","物资类别","保存地点","入库总量","品牌","规格","单位"} 'B表数据接收列
          Dim ddd As Row = Tables("物资明细").AddNew
            For i As Integer = 0 To nma.Length - 1
          ddd(nmb(i)) = e.DataRow(nma(i))
         Next
End If
看看 显示什么? 

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


加好友 发短信
等级:婴狐 帖子:40 积分:317 威望:0 精华:0 注册:2020/5/8 10:10:00
  发帖心情 Post By:2020/6/10 21:15:00 [只看该作者]

增加一个对话框?
[此贴子已经被作者于2020/6/10 21:19:31编辑过]

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


加好友 发短信
等级:婴狐 帖子:40 积分:317 威望:0 精华:0 注册:2020/5/8 10:10:00
  发帖心情 Post By:2020/6/10 21:19:00 [只看该作者]

入库登记表DataColChanged属性如下:

If e.DataCol.Name = "物资名称" Then '发生变化的是物资名称
    Dim dr As DataRow 
    dr = DataTables("物资明细").Find("物资名称 = '" & e.DataRow("物资名称") & "'" ) '在物资明细表找出该产品
    e.DataRow("保存地点") = User.name
    If dr IsNot Nothing '如果找到, 则设置各列内容
        e.DataRow("物资类别") = dr("物资类别")
        e.DataRow("入库总量") = dr("入库总量")
        e.DataRow("原有库存") = dr("库存数量")
        e.DataRow("规格") = dr("规格")
        e.DataRow("单位") = dr("单位")
     If e.DataCol.Name = "入库数量" Then '如果"入库数量发生变化
        e.DataRow ("入库总量") = e.DataRow("入库总量") + e.DataRow("入库数量") 
        e.DataRow("原有库存") = e.DataRow("原有库存") +  e.DataRow("入库数量") 
        dr("入库总量")  =  e.DataRow ("入库总量") 
     End If
    Else
        e.DataRow("原有库存")= 0
       If e.DataCol.Name = "入库数量" Then '如果"入库数量发生变化
         e.DataRow ("入库总量") = e.DataRow("入库数量")      
        End If

     
      If e.DataCol.Name = "piao据号"  Then '如果piao据号发生变化,piao据号输入完成
          Dim nma() As String = {"物资名称","物资编号","物资类别","保存地点","入库总量","品牌","规格","单位"} 'A表数据来源列
          Dim nmb() As String = {"物资名称","物资编号","物资类别","保存地点","入库总量","品牌","规格","单位"} 'B表数据接收列
          Dim ddd As Row = Tables("物资明细").AddNew
            For i As Integer = 0 To nma.Length - 1
          ddd(nmb(i)) = e.DataRow(nma(i))
         Next
      End If

End If
End If

If e.DataCol.Name = "保存地点" Then  '如果保存地点发生变化
  Dim mc As DataRow
  mc = DataTables("物资管理人").find("部门 = '" & e.DataRow("保存地点") & "'")
  e.DataRow("保管员") = mc("姓名")
End If

问题在哪呢?
[此贴子已经被作者于2020/6/10 21:22:57编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2020/6/10 23:30:00 [只看该作者]

调试,运行 看看显示什么

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


加好友 发短信
等级:婴狐 帖子:40 积分:317 威望:0 精华:0 注册:2020/5/8 10:10:00
  发帖心情 Post By:2020/6/11 7:39:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:122.png
图片点击可在新窗口打开查看
每输入一项即显示这个对话框,应该是提示确认,别的没有,也不见详细信息

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110649 积分:563159 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/11 9:09:00 [只看该作者]

最外一层有【If e.DataCol.Name = "物资名称" Then】这个判断,也就是只有"物资名称"列数据变化才能执行if里面的代码,那么在里层在判断其它列名是永远都不会成立的...

试试
Select Case e.DataCol.Name
    Case "物资名称" '发生变化的是物资名称
        Dim dr As DataRow
        dr = DataTables("物资明细").Find("物资名称 = '" & e.DataRow("物资名称") & "'" ) '在物资明细表找出该产品
        e.DataRow("保存地点") = User.name
        If dr IsNot Nothing '如果找到, 则设置各列内容
            e.DataRow("物资类别") = dr("物资类别")
            e.DataRow("入库总量") = dr("入库总量")
            e.DataRow("原有库存") = dr("库存数量")
            e.DataRow("规格") = dr("规格")
            e.DataRow("单位") = dr("单位")
        Else
            e.DataRow("原有库存")= 0
        End If
    Case "入库数量" '如果"入库数量发生变化
        Dim dr As DataRow
        dr = DataTables("物资明细").Find("物资名称 = '" & e.DataRow("物资名称") & "'" ) '在物资明细表找出该产品
        If dr IsNot Nothing
            e.DataRow ("入库总量") = e.DataRow("入库总量") + e.DataRow("入库数量")
            e.DataRow("原有库存") = e.DataRow("原有库存") +  e.DataRow("入库数量")
            dr("入库总量")  =  e.DataRow ("入库总量")
        Else
            e.DataRow("原有库存")= 0
            e.DataRow ("入库总量") = e.DataRow("入库数量")
        End If
    Case "piao据号"  '如果piao据号发生变化,piao据号输入完成
        Dim nma() As String = {"物资名称","物资编号","物资类别","保存地点","入库总量","品牌","规格","单位"} 'A表数据来源列
        Dim nmb() As String = {"物资名称","物资编号","物资类别","保存地点","入库总量","品牌","规格","单位"} 'B表数据接收列
        Dim ddd As Row = Tables("物资明细").AddNew
        For i As Integer = 0 To nma.Length - 1
            ddd(nmb(i)) = e.DataRow(nma(i))
        Next
    Case "保存地点" '如果保存地点发生变化
        Dim mc As DataRow
        mc = DataTables("物资管理人").find("部门 = '" & e.DataRow("保存地点") & "'")
        e.DataRow("保管员") = mc("姓名")
End Select

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


加好友 发短信
等级:婴狐 帖子:40 积分:317 威望:0 精华:0 注册:2020/5/8 10:10:00
  发帖心情 Post By:2020/6/11 9:27:00 [只看该作者]

谢谢蓝老师,循环设置的问题我考虑得肤浅了.

 回到顶部