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


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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/27 11:35: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
                e.datarow("售出_起号") = dr("售出_止号") + 1
            ElseIf dr.IsNull("上年结转_起号") = False Then
                e.datarow("售出_起号") = 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)("售出_金额")
           
        Next
       
End Select


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


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

有点甜老师:
        请您帮我改一下以上的编码!我编的有错误,编码中下次的自动起、止号不能随着我手工录入售出张数后自动生成!敬等老师帮我改一下编码!????????????



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


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

谢谢老师!我马上试一下!????????

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


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

有点甜老师:

           出现如下错误提示

              .NET Framework 版本:2.0.50727.8669
Foxtable 版本:2017.10.26.1
错误所在事件:表,明细账,DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“”到类型“Double”的转换无效。
输入字符串的格式不正确。


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


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

试试

 

        Else

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


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


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

老师:

     我作的这个表是按您推见的流水账的代码改过来的,刚才我发现流水账中还有一个Aftermoverow的事件代码。请问我作的表中要不要也写这个代码。如果写,要怎么改写?

     Dim Key As Decimal
Dim Index As Integer
Dim Filter As String
Dim r As Row
Index = Math.Min(e.OldIndex, e.NewIndex)
Key = e.Table.Rows(Index)("_SortKey")
r = e.Table.Rows(e.NewIndex)
Filter = "[_SortKey] >= " & Key & " And [产品] = '" & r("产品") & "'"
e.Table.DataTable.DataCols("入库").RaiseDataColChanged(Filter)

 

 

[此贴子已经被作者于2017/11/27 17:02:52编辑过]

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


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

Aftermoverow 事件的代码可以不写。

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


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

老师:

       您给编的自动生成的起号可以用了。但还有一个小问题,就是要作到当售出张数为空时,所在行的售出起号也为空,请老师在原代码上改写一下!

 

      以下是您已编 的代码和我出现问题的截图:

<!--StartFragment -->

   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)("所领入_张数")
           
        Next
       

 

此主题相关图片如下:xr3k5n0{6kvh{3(wgo~2j0k.png
按此在新窗口浏览图片
[此贴子已经被作者于2017/11/28 20:29:44编辑过]

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


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

老师 ,还有一个问题,为什么 每次打开明细表时,是一片空白,一定要进入窗口管理时才显示全表?
[此贴子已经被作者于2017/11/28 20:33:52编辑过]

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


加好友 发短信
等级:超级版主 帖子:106079 积分:539494 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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编辑过]

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