Foxtable(狐表)用户栏目专家坐堂 → 甜甜,你好, 自动编号问题


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

主题:甜甜,你好, 自动编号问题

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


加好友 发短信
等级:四尾狐 帖子:822 积分:5794 威望:0 精华:0 注册:2015/2/3 22:19:00
甜甜,你好, 自动编号问题  发帖心情 Post By:2018/3/22 17:22:00 [显示全部帖子]

设计了这样一组数据, 比如:

编号                 次数
111 001
111 002
222 001
222 002
222 003
222 004

参考: http://www.foxtable.com/webhelp/scr/2403.htm

修改为:
Select e.DataCol.Name
    Case "编号"
        If e.DataRow.IsNull("编号") Then
            e.DataRow("次数") = Nothing
        Else
            Dim bh As String = e.DataRow("编号")
            If e.DataRow("次数").StartsWith(bh) = False '如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(次数)","编号 = '" & bh & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max) + 1 '加1
                Else
                    idx = Nothing '否则顺序号等于空
                End If
                e.DataRow("次数") = Format(idx,"000")
            End If
        End If
End Select

但没有实现


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


加好友 发短信
等级:四尾狐 帖子:822 积分:5794 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/3/22 18:37:00 [显示全部帖子]

甜甜太厉害了. 如果单独使用这段代码是完全可行的, 但是我把这段代码加到这个里面,就不行了, 要稍微改动一下哪里呢?


...
...
...
 For Each fdr As DataRow In DataTables("客户数据").Select("固定时间 = '" & e.DataRow("星期") & "'", "固定排序,时间")
'从客户数据里面加载数据到主表里面

        If i = 0 Then
            dr = e.DataRow
        Else
            dr = e.DataTable.AddNew
        End If
        dr("日期") = e.DataRow("日期")
        dr("编号") = fdr("编号")
        dr("支付方式") = fdr("支付方式")
     
Select e.DataCol.Name
    Case "编号"
        If e.DataRow.IsNull("编号") Then
            e.DataRow("次数") = Nothing
        Else
            Dim bh As String = e.DataRow("编号")
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(次数)","编号 = '" & bh & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max) + 1 '加1
            Else
                idx = 1'否则顺序号等于空
            End If
            e.DataRow("次数") = Format(idx,"000")
        End If
End Select

    i += 1

    Next
    SystemReady = True
    Tables("主表").sort = "日期"
End If


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


加好友 发短信
等级:四尾狐 帖子:822 积分:5794 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/3/26 15:28:00 [显示全部帖子]

现在程序要这样设置了, 次数有时要人工修改一下. 然后下一条次数会自动按照上一条次数的数字+1, 而不是用最大次数+1
比如是这样:

编号       次数
111   001
111    002
222  001
222  002
222  003
222  004
222    008 (人工修改了次数)
222    009 (自动按上面的数字+1)
222   010   (同上)

再次谢谢甜甜帮忙:)




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


加好友 发短信
等级:四尾狐 帖子:822 积分:5794 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/3/26 16:27:00 [显示全部帖子]

"

如果你要计算次数,可以改成这样

 

max = e.DataTable.Compute("count(次数)","编号 = '" & bh & "' And [_Identify] <> " & dr("_Identify")) '取得该类别的最大编号

"

这个代码还是查找数据记录中最大次数,然后再加1, 不是按照上一条数据里面手动改的次数记录数字加1. 

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


加好友 发短信
等级:四尾狐 帖子:822 积分:5794 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/3/26 17:45:00 [显示全部帖子]

帮我看下附件,谢谢1

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


加好友 发短信
等级:四尾狐 帖子:822 积分:5794 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/3/26 17:45:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.rar


帮我看下附件,谢谢1


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


加好友 发短信
等级:四尾狐 帖子:822 积分:5794 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/3/27 16:49:00 [显示全部帖子]

恩, 单独运行这段代码是完全可行的. 我把代码加到另外一段里面,修改如下,就不行了: 次数不能增加, 次数为空

For Each fdr As DataRow In DataTables("客户数据").Select("固定时间 = '" & e.DataRow("星期") & "'", "固定排序,时间")
    '从客户数据里面加载数据到主表里面
    
    If i = 0 Then
        dr = e.DataRow
    Else
        dr = e.DataTable.AddNew
    End If
    dr("日期") = e.DataRow("日期")
    dr("编号") = fdr("编号")
    dr("支付方式") = fdr("支付方式")
    
    If e.DataRow.IsNull("编号") Then
            e.DataRow("次数") = Nothing
        Else
            Dim bh As String = e.DataRow("编号")
            Dim dr22 As DataRow = e.DataTable.find("编号 = '" & bh & "' and _Identify < " & e.DataRow("_Identify"), "_Identify 

desc")
            If dr22 IsNot Nothing Then
                e.DataRow("次数") = dr22("次数") + 1
            Else
                e.DataRow("次数") = 1
            End If           
            End If

        If e.DataRow.IsNull("编号") Then
            e.DataRow("次数") = Nothing
        Else
            Dim bh As String = e.DataRow("编号")
            Dim pdr As DataRow = Nothing
            For Each dr22 As DataRow In e.DataTable.Select("编号 = '" & bh & "' and _Identify >= " & e.DataRow("_Identify"), 

"_Identify")
                If pdr IsNot Nothing Then
                    dr22("次数") = pdr("次数") + 1
                End If
                pdr = dr22
            Next
        End If

    
    i += 1
Next
...
...

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


加好友 发短信
等级:四尾狐 帖子:822 积分:5794 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/3/27 17:03:00 [显示全部帖子]

可以私发给你吗? 有隐私信息图片点击可在新窗口打开查看

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


加好友 发短信
等级:四尾狐 帖子:822 积分:5794 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/3/27 17:59:00 [显示全部帖子]

日期选  星期一 的日期

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



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


加好友 发短信
等级:四尾狐 帖子:822 积分:5794 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/3/27 18:45:00 [显示全部帖子]

但是编号为409, 410的不能增加次数, 是空的, 给他设置一个初始值也不能+1

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