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


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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/29 15:41: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
            Else
               
                e.DataRow("售出_起号") = Nothing
               
            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

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


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

老师 :

      还是不行啊!

      我把我的原表全部传给您,请您试一下。

     现在有三个问题,

第1,是要求售出起号和售出张数可以手工录入,而且当后面的售出张数为空时,售出起号的字段也为空。下次如再售出,录入售出张数后,售出的起号和止号自动生成。

第2,是当主窗口显示时,窗口下方的明细表的列的顺序完全错位了,要求和原明细表的顺序一样,固定不变。如何改动。请老师写出来。我自己边学边作。

第3,在主窗口点新增按钮时,要求只复制上方的日期,字、号等 几个列,本行其它列应为空,可现在的“售出起号”,和“结存张数”仍然复制上一行。

     请老师 帮我改一下。 

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

[此贴子已经被作者于2017/11/29 16:16:58编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/29 16:19: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 e.DataRow.IsNull("售出_张数") = False Then
                If dr.IsNull("售出_止号") = False Then
                    e.DataRow("售出_起号") = val(dr("售出_止号")) + 1
                ElseIf 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
       
        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

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


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

老师:

      自动起、止号的问题解决了!图片点击可在新窗口打开查看

     还有两个问题,一个是当主窗口显示时,窗口下方的明细表的列的顺序完全错位了,要求和原明细表的顺序一样,固定不变。如何改动。请老师写出来。

我自己边学边作!

      以下是明细表的正常列序和错位的主窗口的明细表列序的截图

 

 


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


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


图片点击可在新窗口打开查看此主题相关图片如下:y71upksav5cv795%lr%}1jt.png
图片点击可在新窗口打开查看

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

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


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

1、窗口AfterLoad事件

 

Dim t As Table = e.Form.controls("table1").Table
t.SetColVisibleWidth(Tables("明细账").getColVisibleWidth)

 

2、新增按钮

 

Dim max As Integer = Tables("明细账").Rows(Tables("明细账").Rows.count-1)("号")
Dim r As Row = Tables("明细账").Current.Clone()
SystemReady = False
r("号") =max + 1
r("领入_起号") = Nothing
r("领入_止号") = Nothing
r("领入_张数") = Nothing
r("上年结转_起号") = Nothing
r("上年结转_止号") = Nothing
r("上年结转_张数") = Nothing
r("售出_起号") = Nothing
r("售出_止号") = Nothing
r("售出_张数") = Nothing
r("售出_废piao") = Nothing
r("售出_金额") = Nothing
r("结存张数") = Nothing
r("所领入_起号") = Nothing
r("所领入_止号") = Nothing
r("所领入结存张数") = Nothing
r("结存金额") = Nothing
r("所领入_张数") = Nothing
SystemReady = True


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


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

有点甜 老师 :完美!!!!我一定向您好好学!图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看


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