Foxtable(狐表)用户栏目专家坐堂 → 随姓名自动生成下次起号


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

主题:随姓名自动生成下次起号

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


加好友 发短信
等级:幼狐 帖子:187 积分:1434 威望:0 精华:0 注册:2017/10/21 17:27:00
随姓名自动生成下次起号  发帖心情 Post By:2018/1/12 22:28:00 [只看该作者]

老师:

    请您给写个代码:如果同一姓名发生售出张数,那么下次的售出起号自动在上次止号的数据上加1,得到本日本行的售出起号.

如下图:

 


图片点击可在新窗口打开查看此主题相关图片如下:2018.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/1/12 22:30:21编辑过]

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


加好友 发短信
等级:超级版主 帖子:110626 积分:563032 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/12 22:39:00 [只看该作者]

If e.DataCol.Name = "售出张数"
    If e.NewValue > 0
        Dim dr As DataRow = e.DataTable.Find("售出日期 < #" & e.DataRow("售出日期") & "# and 售出止号 is not null","售出日期 desc")
        If dr IsNot Nothing Then
            e.DataRow("售出起号") = dr("售出止号") + 1
            e.DataRow("售出起号") = dr("售出止号") + e.NewValue
        End If
    End If
End If

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


加好友 发短信
等级:一尾狐 帖子:476 积分:4602 威望:0 精华:0 注册:2013/5/22 15:32:00
  发帖心情 Post By:2018/1/12 23:05:00 [只看该作者]

在DataColChanged 事件内写以下程序试试

Select Case e.DataCol.Name
    Case "姓名","售出日期","售出张数"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("姓名") = False AndAlso dr.IsNull("售出日期") = False Then
            Dim dr1 As DataRow = e.DataTable.find("售出日期 < #" & dr("售出日期") & "# And 姓名 = '" & dr("姓名") & "'","售出日期 DESC")
            If dr IsNot Nothing Then
                If dr1.Isnull("售出止号") = False Then
                    dr("售出起号") = dr1("售出止号") + 1
                    If dr("售出张数") > 0 Then
                        dr("售出止号") = dr1("售出止号") + dr("售出张数")
                    End If
                End If
            End If
        End If
End Select

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


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

以下是引用有点蓝在2018/1/12 22:39:00的发言:
If e.DataCol.Name = "售出张数"
    If e.NewValue > 0
        Dim dr As DataRow = e.DataTable.Find("售出日期 < #" & e.DataRow("售出日期") & "# and 售出止号 is not null","售出日期 desc")
        If dr IsNot Nothing Then
            e.DataRow("售出起号") = dr("售出止号") + 1
            e.DataRow("售出起号") = dr("售出止号") + e.NewValue
        End If
    End If
End If

老师:我把您的代码加在我的代码后面,无效啊,请看一下:

Select Case e.DataCol.Name
   
    Case "明细账_领入张数","明细账_售出张数","明细账_废piao","明细账_上年结转张数","明细账_退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("明细账_退piao张数")  - mr("明细账_售出张数") -mr("明细账_废piao")
            dr = mr
        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)("明细账_退piao张数")  - drs(i)("明细账_售出张数") -drs(i)("明细账_废piao")
        Next
End Select
Select Case e.DataCol.Name
   
    Case "明细账_售出张数","明细账_售出金额"
        If e.NewValue <> e.OldValue Then
            e.DataTable.DataCols("摘要_日期").RaiseDataColChanged()
        End If
End Select

Select Case e.DataCol.name
    Case "明细账_领入起号","明细账_领入止号","明细账_领入张数","姓名","姓名","实物账_发出起号","实物账_发出止号","实物账_发出张数","明细账_今日领入张数","明细账_退piao张数","实物账_退piao张数","年","月","日","凭证_实物号","年","月","日","凭证_号","明细账_上年结转张数","实物账_上年结转张数","实物账部分_号","实物账部分_上年结转张数"
        Dim dr As DataRow = DataTables("实物账").Find("id2 = '" & e.DataRow("_Identify") & "'")
        If dr Is Nothing Then
            dr = DataTables("实物账").AddNew()
            dr("id2") = e.DataRow("_Identify")
        End If
        dr("实物账_发出起号") = e.DataRow("明细账_领入起号")
        dr("姓名") = e.DataRow("姓名")
        dr("年") = e.DataRow("年")
        dr("月") = e.DataRow("月")
        dr("日") = e.DataRow("日")
        dr("实物账_今日发出张数") = e.DataRow("明细账_今日领入张数")
        dr("实物账_退piao张数") = e.DataRow("明细账_退piao张数")
        dr("凭证_号") = e.DataRow("实物账部分_号")
        dr("引用部分") = e.DataRow("摘要_内容")  
End Select
If e.DataCol.Name = "售出张数"
    If e.NewValue > 0
        Dim dr As DataRow = e.DataTable.Find("售出日期 < #" & e.DataRow("售出日期") & "# and 售出止号 is not null","售出日期 desc")
        If dr IsNot Nothing Then
            e.DataRow("售出起号") = dr("售出止号") + 1
            e.DataRow("售出起号") = dr("售出止号") + e.NewValue
        End If
    End If
End If

[此贴子已经被作者于2018/1/12 23:20:23编辑过]

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


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

 

[此贴子已经被作者于2018/1/12 23:18:33编辑过]

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


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

以下是引用sjx71在2018/1/12 23:05:00的发言:
在DataColChanged 事件内写以下程序试试

Select Case e.DataCol.Name
    Case "姓名","售出日期","售出张数"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("姓名") = False AndAlso dr.IsNull("售出日期") = False Then
            Dim dr1 As DataRow = e.DataTable.find("售出日期 < #" & dr("售出日期") & "# And 姓名 = '" & dr("姓名") & "'","售出日期 DESC")
            If dr IsNot Nothing Then
                If dr1.Isnull("售出止号") = False Then
                    dr("售出起号") = dr1("售出止号") + 1
                    If dr("售出张数") > 0 Then
                        dr("售出止号") = dr1("售出止号") + dr("售出张数")
                    End If
                End If
            End If
        End If
End Select

老师:

我把您的代码加在我的代码后面,可数据没有反应啊

Select Case e.DataCol.Name
   
    Case "明细账_领入张数","明细账_售出张数","明细账_废piao","明细账_上年结转张数","明细账_退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("明细账_退piao张数")  - mr("明细账_售出张数") -mr("明细账_废piao")
            dr = mr
        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)("明细账_退piao张数")  - drs(i)("明细账_售出张数") -drs(i)("明细账_废piao")
        Next
End Select
Select Case e.DataCol.Name
   
    Case "明细账_售出张数","明细账_售出金额"
        If e.NewValue <> e.OldValue Then
            e.DataTable.DataCols("摘要_日期").RaiseDataColChanged()
        End If
End Select

Select Case e.DataCol.name
    Case "明细账_领入起号","明细账_领入止号","明细账_领入张数","姓名","姓名","实物账_发出起号","实物账_发出止号","实物账_发出张数","明细账_今日领入张数","明细账_退piao张数","实物账_退piao张数","年","月","日","凭证_实物号","年","月","日","凭证_号","明细账_上年结转张数","实物账_上年结转张数","实物账部分_号","实物账部分_上年结转张数"
        Dim dr As DataRow = DataTables("实物账").Find("id2 = '" & e.DataRow("_Identify") & "'")
        If dr Is Nothing Then
            dr = DataTables("实物账").AddNew()
            dr("id2") = e.DataRow("_Identify")
        End If
        dr("实物账_发出起号") = e.DataRow("明细账_领入起号")
        dr("姓名") = e.DataRow("姓名")
        dr("年") = e.DataRow("年")
        dr("月") = e.DataRow("月")
        dr("日") = e.DataRow("日")
        dr("实物账_今日发出张数") = e.DataRow("明细账_今日领入张数")
        dr("实物账_退piao张数") = e.DataRow("明细账_退piao张数")
        dr("凭证_号") = e.DataRow("实物账部分_号")
        dr("引用部分") = e.DataRow("摘要_内容")  
End Select
Select Case e.DataCol.Name
    Case "姓名","售出日期","售出张数"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("姓名") = False AndAlso dr.IsNull("售出日期") = False Then
            Dim dr1 As DataRow = e.DataTable.find("售出日期 < #" & dr("售出日期") & "# And 姓名 = '" & dr("姓名") & "'","售出日期 DESC")
            If dr IsNot Nothing Then
                If dr1.Isnull("售出止号") = False Then
                    dr("售出起号") = dr1("售出止号") + 1
                    If dr("售出张数") > 0 Then
                        dr("售出止号") = dr1("售出止号") + dr("售出张数")
                    End If
                End If
            End If
        End If
End Select

 


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


加好友 发短信
等级:一尾狐 帖子:476 积分:4602 威望:0 精华:0 注册:2013/5/22 15:32:00
  发帖心情 Post By:2018/1/13 1:01:00 [只看该作者]

开始没注意字段名称 

把程序中的“售出张数” 换成“明细账_售出张数“
“售出起号” 换成“明细账_售出起号“
“售出止号” 换成“明细账_售出止号“

试试

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


加好友 发短信
等级:超级版主 帖子:110626 积分:563032 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/13 8:50:00 [只看该作者]

上传具体实例测试

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


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

以下是引用sjx71在2018/1/13 1:01:00的发言:
开始没注意字段名称 

把程序中的“售出张数” 换成“明细账_售出张数“
“售出起号” 换成“明细账_售出起号“
“售出止号” 换成“明细账_售出止号“

试试

 老师:

出现问题了,如果同一人名下次发生售出张数,下次的起号虽然增加1了,但以后就不变了.


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

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


加好友 发短信
等级:超级版主 帖子:110626 积分:563032 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/13 10:55:00 [只看该作者]

上传具体实例测试

 回到顶部
总数 12 1 2 下一页