Foxtable(狐表)用户栏目专家坐堂 → 出错了


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

主题:出错了

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/9 10:10:00 [显示全部帖子]

1、改成下面

 

Dim trv As WinForm.TreeView = e.Sender
Dim flt As String = "1=2"
'If e.node.Text = "显示所有行" Then
'flt = ""
'Else
For Each nd As WinForm.TreeNode In e.node.Nodes '清除子节点选中状态
    nd.Checked = False
Next
If e.node.ParentNode IsNot Nothing Then '去掉父节点选中状态
    e.node.ParentNode.Checked = False
End If
For Each nd As WinForm.TreeNode In trv.AllNodes
    If nd.Checked Then
        If e.node.Text = "显示所有行" Then
            flt = ""
        Else
            If flt > "" Then
                flt = flt & " Or "  '注意用or而不是And
            End If
            If nd.Level = 0 Then '注意下面的条件都要用括号括起来
                flt = flt & "( 货品属性 = '" & nd.Text & "')"
            Else
                flt = flt & "( 货品属性 = '" & nd.ParentNode.Text & "' And 物料分类 = '" & nd.Text & "')"
            End If
        End If
    End If
Next
DataTables("数据列表").LoadFilter = flt
DataTables("数据列表").Load()

 

2、你这个是加载,不是筛选

 

DataTables("数据列表").LoadFilter = flt
DataTables("数据列表").Load()

 

如果要筛选,改成,如

 

Tables("数据列表").Filter = flt

 

但你的数据加载不完全,计算流水有可能出错的。你试试把全部数据都加载出来以后,再测试计算流水账。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/9 15:53:00 [显示全部帖子]

参考代码

 

For Each ary() As String In DataTables("数据列表").GetValues("产品名称|规格型号", "规格型号 is not null")
    Dim dr As DataRow = DataTables("数据列表").Find("[产品名称] = '" & ary(0) & "' And [规格型号] = '" & ary(1) & "'", "[_SortKey]")
    Dim drs As List(of DataRow)
    dr("结余数量") = dr("主计量单位进仓数量") - dr("主计量单位出仓数量")
   
    drs = DataTables("数据列表").Select("[_SortKey] >= " & dr("_SortKey") & "And [产品名称] = '" & dr("产品名称") & "' And [规格型号] = '" & dr("规格型号") & "'", "[_SortKey]")
    For i As Integer = 1 To drs.Count - 1
        drs(i)("结余数量") = drs(i-1)("结余数量") + drs(i)("主计量单位进仓数量") - drs(i)("主计量单位出仓数量")
    Next
Next


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/9 16:59:00 [显示全部帖子]

For Each ary() As String In DataTables("数据列表").GetValues("产品名称|规格型号")
    Dim filter As String = ""
    If ary(1) = Nothing Then
        filter = "[产品名称] = '" & ary(0) & "' and [规格型号] is null"
    Else
        filter = "[产品名称] = '" & ary(0) & "' And [规格型号] = '" & ary(1) & "'"
    End If
    Dim dr As DataRow = DataTables("数据列表").Find(filter, "日期, [_SortKey]")
    Dim drs As List(of DataRow)
    dr("结余数量") = dr("主计量单位进仓数量") - dr("主计量单位出仓数量")
   
    drs = DataTables("数据列表").Select("[日期] >= '" & dr("日期") & "' And " & filter, "日期, [_SortKey]")
    For i As Integer = 1 To drs.Count - 1
        drs(i)("结余数量") = drs(i-1)("结余数量") + drs(i)("主计量单位进仓数量") - drs(i)("主计量单位出仓数量")
    Next
Next

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/9 19:10:00 [显示全部帖子]

12楼代码没问题,请认认真真测试啊。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/10 10:36:00 [显示全部帖子]

1、看懂代码

 

For Each ary() As String In DataTables("数据列表").GetValues("产品名称|规格型号","产品名称 is not null")
    Dim filter As String = ""
    If ary(1) = Nothing Then
        filter = "[产品名称] = '" & ary(0) & "' and [规格型号] is null"
    Else
        filter = "[产品名称] = '" & ary(0) & "' And [规格型号] = '" & ary(1) & "'"
    End If
    Dim dr As DataRow = DataTables("数据列表").Find(filter, "日期, [_SortKey]")
    Dim drs As List(of DataRow)
    dr("结余数量") = dr("主计量单位进仓数量") - dr("主计量单位出仓数量")
    
    drs = DataTables("数据列表").Select("[日期] >= '" & dr("日期") & "' And " & filter, "日期, [_SortKey]")
    For i As Integer = 1 To drs.Count - 1
        drs(i)("结余数量") = drs(i-1)("结余数量") + drs(i)("主计量单位进仓数量") - drs(i)("主计量单位出仓数量")
    Next
Next

 

2、加载所有数据出来,做一个按钮,执行上面的代码重新计算结果啊。

 

3、如果还有问题,截图举例说明哪些计算错误,正确应该是什么啊。


 回到顶部