Foxtable(狐表)用户栏目专家坐堂 → 代码错在哪


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

主题:代码错在哪

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


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

   

If e.DataCol.Name = "物料编码"  Then
Dim a1 As String = e.DataRow("物料编码")
Dim d1 As Integer = 1
Dim b1 As Integer
For b1 = e.DataRow("物料编码").length To 1
Dim e1 As String = left(a1,b1)      ' 取【物料编码】列的字符,字符长度 依次次减少
Dim dr As DataRow
dr = DataTables("表A").Find("物料编码 ='" & e1 & "'")   '查找 [物料编码] 列等于 [物料编码]列或其中部分字符的行
If dr IsNot Nothing Then
d1= dr("数量")*d1    '把找到的行的 【数量】列的数字 累乘
End If  

Next
e.DataRow("数量辅助列") = d1    '把累乘的数值赋值给 【数量辅助列】
End If

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2021/4/26 8:12:32编辑过]

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


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

没看懂这个代码到底要做什么。

首先e是事件里一个固定的变量名称,自己定义的变量不能使用e这个名称。其次b变量没有赋值默认就是0,所以left(a,b)就是一个空字符串,没内容

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


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

重新调整并上传实例,请帮看看,代码运行结果和期望的不一样

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


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1 (2).zip


 回到顶部
帅哥,在线噢!
y2287958
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4772 积分:34668 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2021/4/26 9:47:00 [只看该作者]

或者
For Each dr As DataRow In DataTables("表A").DataRows
    Dim lst As new List(of String)   '用于储存目标内容
    Dim ss As String = dr("物料编码")
    For i As Integer = 1 To len(ss)
        Dim fdr As DataRow = DataTables("表A").find("物料编码='" & left(ss,i) & "'")
        lst.add(fdr("数量"))
    Next
    dr("数量辅助列") = Eval(String.join("*",lst.ToArray))
Next

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


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

谢谢2位的代码,又学到了,思路也开阔了。 我把自己的代码修改下,也能正常了。

 

我的代码错误在于for to 赋值得从小到大,若从大到小得加步长为-1

 

 

 

If e.DataCol.Name = "物料编码" Then
Dim d As Integer = 1
For b As Integer = 1 To e.DataRow("物料编码").length
Dim dr As DataRow = DataTables("表A").Find("物料编码 ='" & left(e.DataRow("物料编码"),b) & "'")  
d= dr("数量")*d  
Next
e.DataRow("数量辅助列") = d 

End If

[此贴子已经被作者于2021/4/26 11:09:45编辑过]

 回到顶部