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


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

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

帅哥哟,离线,有人找我吗?
飞过海洋
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
飞过海洋
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
飞过海洋
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
飞过海洋
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | 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的发言:
加到原来所有代码的最后面,不要插入中间

老师:

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


 回到顶部
帅哥哟,离线,有人找我吗?
飞过海洋
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
飞过海洋
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
飞过海洋
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
飞过海洋
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

老师:

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

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

我自己边学边作!

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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
飞过海洋
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看

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