Foxtable(狐表)用户栏目专家坐堂 → 粘贴一列多个数据的问题


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

主题:粘贴一列多个数据的问题

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
粘贴一列多个数据的问题  发帖心情 Post By:2021/2/4 16:03:00 [只看该作者]

在表的 DATACOLCHANGED 事件中加入了一些代码,这些代码 包含 currenttable.position, 都与当前行有关,当我把数据一格一格粘贴到表上时,正常,

若是同时粘贴1列中的多格数据,事件执行只按第一行的currenttable.position执行,导致后面几行的代码执行不正确,请问这个如何解决。


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


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

贴出完整代码说明

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/2/4 16:21:00 [只看该作者]

If e.DataCol.Name = "物料信息_物料编码" Then  
If Tables("表A").current("物料信息_级别") = 1 Then
e.DataRow("物料信息_层级") = e.DataRow("物料信息_物料编码")
End If
End If
If e.DataCol.Name = "物料信息_物料编码" Then
If Tables("表A").current("物料信息_级别") = 2
Dim A As Integer = CurrentTable.Position
Dim t As Table = Tables("表A")
Dim C As Integer = t.Rows(A)("物料信息_级别")
Dim D As Integer = 0
Do While  C > 1
      If C = 2 Then
          D = D+1
End If
          A=A-1
          C = t.Rows(A)("物料信息_级别")
Loop
e.DataRow("物料信息_层级") = t.Rows(A)("物料信息_物料编码") & "." & D
End If
End If

 

 

表的列有     物料信息_级别,       物料信息_层级,        物料信息_物料编码

 

 

如果我把第一行,第二行,第三行的 “物料信息_级别"列数字分别输入为 1,2, 2 ,再在“物料信息_物料编码”列中粘贴3个编码,这时,“物料信息_层级“只按  If Tables("表A").current("物料信息_级别") = 1 ”执行。

 


 


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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/4 16:32:00 [只看该作者]

没看懂的第二段代码要做什么,这种表事件请直接使用e.DataRow,而不是current,currenttable这种东西

If e.DataCol.Name = "物料信息_物料编码" Then
    If e.DataRow("物料信息_级别") = 1 Then
        e.DataRow("物料信息_层级") = e.DataRow("物料信息_物料编码")
    End If
End If

具体请上传实例说明

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/2/4 16:45:00 [只看该作者]

以下是引用有点蓝在2021/2/4 16:32:00的发言:
没看懂的第二段代码要做什么,这种表事件请直接使用e.DataRow,而不是current,currenttable这种东西

If e.DataCol.Name = "物料信息_物料编码" Then
    If e.DataRow("物料信息_级别") = 1 Then
        e.DataRow("物料信息_层级") = e.DataRow("物料信息_物料编码")
    End If
End If

具体请上传实例说明

简单说下,

 

就是  物料信息_级别为 1时,执行事件代码1,物料信息_级别为2时,执行事件代码2,

 

该2个代码都与当前行有关。

 

 

但我若是同时粘贴多个数据  到物料信息_物料编码列,软件只按当前行对应的  "物料信息_级别"  上的数字执行,

 

比如如下:

物料信息_级别    物料信息_层级       物料信息_物料编码       

        1                 77125453         77125453

        2                 77125454         77125454

        2                 77125455         77125455

 

物料信息_物料编码 列的数字若是1个个粘贴或是手工输入,执行代码后结果如下,这是正确的运行结果

 

 

物料信息_级别    物料信息_层级       物料信息_物料编码        

        1                 77125453          77125453

        2                 77125453.1       77125454

        2                 77125453.2       77125455

 

 

 

 

[此贴子已经被作者于2021/2/4 16:46:59编辑过]

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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/4 17:20:00 [只看该作者]

使用文字说明一下事件代码2的逻辑和计算规则

 回到顶部