Foxtable(狐表)用户栏目专家坐堂 → 编写下次自动生成的起号


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

主题:编写下次自动生成的起号

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


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


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


加好友 发短信
等级:幼狐 帖子:187 积分:1434 威望:0 精华:0 注册:2017/10/21 17:27:00
  发帖心情 Post By:2017/11/28 22:03:00 [只看该作者]

以下是引用有点蓝在2017/11/28 21:38:00的发言:
后面加上代码

If e.DataCol.Name = "售出_张数" AndAlso e.DataRow.Isnull("售出_张数") Then
    e.DataRow("售出起号") = nothing
End If
[此贴子已经被作者于2017/11/28 21:37:48编辑过]

老师 :

       我加了,怎么还不对啊。是不是我加错位置了。请改一下

Select Case e.DataCol.Name
   
    Case "姓名","上年结转_张数","领入_张数","售出_张数","结存张数","售出_废piao","售出_金额","所领入_张数","所领入结存张数"
       
        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("姓名") & "'", "[_SortKey] Desc")
       
        If dr Is Nothing Then '如果没有上一行,说明本行就是同产品的第一行
           
            mr("结存张数") = mr("上年结转_张数") + mr("领入_张数") - mr("售出_张数")- mr("售出_废piao")
           
            mr("结存金额") = mr("售出_金额")
            mr("所领入结存张数") = mr("所领入_张数")
           
            dr = mr
           
        Else
            If dr.IsNull("售出_止号") = False Then
                e.DataRow("售出_起号") = val(dr("售出_止号")) + 1
            ElseIf dr.IsNull("上年结转_起号") = False Then
                e.DataRow("售出_起号") = val(dr("上年结转_起号"))
            End If
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [姓名] = '" & dr("姓名") & "'")
       
        For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
           
            drs(i)("结存张数") = drs(i-1)("结存张数") + drs(i)("上年结转_张数") + drs(i)("领入_张数") - drs(i)("售出_张数")- drs(i)("售出_废piao")
           
            drs(i)("结存金额") = drs(i-1)("结存金额") + drs(i)("售出_金额")
            drs(i)("所领入结存张数") = drs(i-1)("所领入结存张数") + drs(i)("所领入_张数")
            If e.DataCol.Name = "售出_张数" AndAlso e.DataRow.Isnull("售出_张数") Then
                e.DataRow("售出起号") = Nothing
            End If
           
        Next
       
End Select


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


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

加到原来所有代码的最后面,不要插入中间

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


加好友 发短信
等级:幼狐 帖子:187 积分:1434 威望:0 精华:0 注册:2017/10/21 17:27:00
  发帖心情 Post By:2017/11/29 7:23:00 [只看该作者]

以下是引用有点蓝在2017/11/28 23:13:00的发言:
加到原来所有代码的最后面,不要插入中间

老师:

      我刚才试了一下,没效果!依然是“售出张数”为空时,“售出起号”显示出来。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/29 8:46:00 [只看该作者]

        Else
            If dr.IsNull("售出_止号") = False Then
                e.DataRow("售出_起号") = val(dr("售出_止号")) + 1
            ElseIf dr.IsNull("上年结转_起号") = False Then
                e.DataRow("售出_起号") = val(dr("上年结转_起号"))
            End If
        End If

改成

 

    Else

        If dr.IsNull("售出_张数") = False Then
            If dr.IsNull("售出_止号") = False Then
                e.DataRow("售出_起号") = val(dr("售出_止号")) + 1
            ElseIf dr.IsNull("上年结转_起号") = False Then
                e.DataRow("售出_起号") = val(dr("上年结转_起号"))
            End If
        End If
       Else

            e.DataRow("售出_起号") = Nothing

       End If


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


加好友 发短信
等级:幼狐 帖子:187 积分:1434 威望:0 精华:0 注册:2017/10/21 17:27:00
  发帖心情 Post By:2017/11/29 11:55:00 [只看该作者]

以下是引用有点甜在2017/11/29 8:46:00的发言:

        Else
            If dr.IsNull("售出_止号") = False Then
                e.DataRow("售出_起号") = val(dr("售出_止号")) + 1
            ElseIf dr.IsNull("上年结转_起号") = False Then
                e.DataRow("售出_起号") = val(dr("上年结转_起号"))
            End If
        End If

改成

 

    Else

        If dr.IsNull("售出_张数") = False Then
            If dr.IsNull("售出_止号") = False Then
                e.DataRow("售出_起号") = val(dr("售出_止号")) + 1
            ElseIf dr.IsNull("上年结转_起号") = False Then
                e.DataRow("售出_起号") = val(dr("上年结转_起号"))
            End If
        End If
       Else

            e.DataRow("售出_起号") = Nothing

       End If

老师 :用您的代码后,出现了错误信息。


图片点击可在新窗口打开查看此主题相关图片如下:c64birwtas3v8vui5wx@lso.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/29 11:57:00 [只看该作者]

    Else

        If dr.IsNull("售出_张数") = False Then
            If dr.IsNull("售出_止号") = False Then
                e.DataRow("售出_起号") = val(dr("售出_止号")) + 1
            ElseIf dr.IsNull("上年结转_起号") = False Then
                e.DataRow("售出_起号") = val(dr("上年结转_起号"))
            End If
       Else

            e.DataRow("售出_起号") = Nothing

       End If

    End If


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


加好友 发短信
等级:幼狐 帖子:187 积分:1434 威望:0 精华:0 注册:2017/10/21 17:27:00
  发帖心情 Post By:2017/11/29 15:06:00 [只看该作者]

以下是引用有点甜在2017/11/29 11:57:00的发言:

    Else

        If dr.IsNull("售出_张数") = False Then
            If dr.IsNull("售出_止号") = False Then
                e.DataRow("售出_起号") = val(dr("售出_止号")) + 1
            ElseIf dr.IsNull("上年结转_起号") = False Then
                e.DataRow("售出_起号") = val(dr("上年结转_起号"))
            End If
       Else

            e.DataRow("售出_起号") = Nothing

       End If

    End If

老师:

      这次改完更不对了。本行的起号依然有,没有了止号,而且把号段记到了别人的名下


图片点击可在新窗口打开查看此主题相关图片如下:(n%ixtx)7e_b(8$@l~uaaue.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/29 15:11:00 [只看该作者]

贴出你写的完整代码。

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


加好友 发短信
等级:幼狐 帖子:187 积分:1434 威望:0 精华:0 注册:2017/10/21 17:27:00
  发帖心情 Post By:2017/11/29 15:35:00 [只看该作者]

以下是引用有点甜在2017/11/29 15:11:00的发言:
贴出你写的完整代码。

Select Case e.DataCol.Name
   
    Case "姓名","上年结转_张数","领入_张数","售出_张数","结存张数","售出_废piao","售出_金额"
       
        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("姓名") & "'", "[_SortKey] Desc")
       
        If dr Is Nothing Then '如果没有上一行,说明本行就是同产品的第一行
           
            mr("结存张数") = mr("上年结转_张数") + mr("领入_张数") - mr("售出_张数")- mr("售出_废piao")
           
            mr("结存金额") = mr("售出_金额")
           
            dr = mr
           
        Else
           
            If dr.IsNull("售出_张数") = False Then
                If dr.IsNull("售出_止号") = False Then
                    e.DataRow("售出_起号") = val(dr("售出_止号")) + 1
                ElseIf dr.IsNull("上年结转_起号") = False Then
                    e.DataRow("售出_起号") = val(dr("上年结转_起号"))
                End If
            End If
        Else
           
            e.DataRow("售出_起号") = Nothing
           
        End If
       
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [姓名] = '" & dr("姓名") & "'")
       
        For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
           
            drs(i)("结存张数") = drs(i-1)("结存张数") + drs(i)("上年结转_张数") + drs(i)("领入_张数") - drs(i)("售出_张数")- drs(i)("售出_废piao")
           
            drs(i)("结存金额") = drs(i-1)("结存金额") + drs(i)("售出_金额")
           
        Next
       
End Select


 回到顶部
总数 37 上一页 1 2 3 4 下一页