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


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

主题:出错了

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/8 21:04:00 [显示全部帖子]

请贴出开发者密码

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/8 22:06:00 [显示全部帖子]

去掉数据列表的BeforeSort和AfterSort代码。死循环了

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/9 20:40:00 [显示全部帖子]

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

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/9 20:59:00 [显示全部帖子]

我测试没有问题,不过18楼的用法适合在在按钮中使用,不适合放在表中。

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/9 21:32:00 [显示全部帖子]

保留您原来的流水账的用法,12楼甜版的代码不是放在表事件的,是放到按钮执行的。

原来的流水账的用法具体有什么问题?需要什么效果?

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/9 22:18:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "产品名称","规格型号","主计量单位进仓数量","主计量单位出仓数量"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [产品名称] = '" & mr("产品名称") & "' And [规格型号] = '" & mr("规格型号") & "'", "[_SortKey] Desc")
        If dr Isnot Nothing Then
            mr("结余数量") = mr("主计量单位进仓数量") - mr("主计量单位出仓数量")
            'mr("结余金额") = mr("主计量单位进仓数量") * mr("进仓单价") + mr("费用") - mr("主计量单位出仓数量") * mr("出仓单价")
            dr("结余数量") = mr("结余数量")
            'dr("结余金额") = mr("结余金额")
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & "And [产品名称] = '" & dr("产品名称") & "' And [规格型号] = '" & mr("规格型号") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("结余数量") = drs(i-1)("结余数量") + drs(i)("主计量单位进仓数量") - drs(i)("主计量单位出仓数量")
            'drs(i)("结余金额") = drs(i-1)("结余金额") + drs(i)("主计量单位进仓数量") * drs(i)("进仓单价") + drs(i)("费用") - drs(i)("主计量单位出仓数量") * drs(i)("出仓单价")
        Next
        End If
        If e.DataCol.Name = "产品名称" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [产品名称] = '" & e.OldValue & "' And [规格型号] = '" &  e.OldValue & "'", "[_SortKey] Desc")
            If dr is Nothing Then
                dr = e.DataTable.Find("[产品名称] = '" & e.OldValue & "' And [规格型号] = '" &  e.OldValue & "'" , "[_SortKey]")
                If dr IsNot Nothing Then '如果找到,计算库存
                    dr("结余数量") = dr("主计量单位进仓数量") - dr("主计量单位出仓数量")
                    'dr("结余金额") = dr("主计量单位进仓数量") * dr("进仓单价") +dr("费用") - dr("主计量单位出仓数量") * dr("出仓单价")
                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey")  & " And [产品名称] = '" & dr("产品名称") & "' And [规格型号] = '" & mr("规格型号")  & "'",  "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("结余数量") = drs(i-1)("结余数量") + drs(i)("主计量单位进仓数量") - drs(i)("主计量单位出仓数量")
                    'drs(i)("结余金额") = drs(i-1)("结余金额") + drs(i)("主计量单位进仓数量") * drs(i)("进仓单价") + drs(i)("费用") - drs(i)("主计量单位出仓数量") * drs(i)("出仓单价")
                Next
            End If
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/9 22:34:00 [显示全部帖子]

如果规格是可以没有值的,参考12楼的这种用法写查询条件

Dim filter As String = ""
    If ary(1) = Nothing Then
        filter = "[产品名称] = '" & ary(0) & "' and [规格型号] is null"
    Else
        filter = "[产品名称] = '" & ary(0) & "' And [规格型号] = '" & ary(1) & "'"
    End If

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/9 23:03:00 [显示全部帖子]

只是参考28的用法设置查询条件啊,不是让您照抄12楼的代码呀。

 回到顶部