Foxtable(狐表)用户栏目专家坐堂 → 查找最大编码


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

主题:查找最大编码

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/7 19:06:00 [显示全部帖子]

代码改成这样测试

 

If e.DataCol.Name = "申请日期"  Then
    If e.DataRow.IsNull("申请日期")  Then
        e.DataRow("采购申请号") = Nothing
    Else

        e.datarow.save
        Dim dr As DataRow = e.DataTable.SQLFind("申请日期 = '" & e.DataRow("申请日期") & "' and [_Identify] <> " & e.DataRow("_Identify"))
        If dr IsNot Nothing Then
            e.DataRow("采购申请号") = dr("采购申请号")
        Else
            Dim bh As String = Format(e.DataRow("申请日期"),"yyMMDD") '取得编号的8位前缀
            If e.DataRow("采购申请号").StartsWith(bh) = False '如果编号的前8位不符
              Dim dt2 As DataTable = DataTables("采购申请明细")
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.SQLCompute("Max(采购申请号)","申请日期 = '" & e.DataRow("申请日期") & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号

msgbox(max)
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(10,3)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If

msgbox(idx)
               e.DataRow("采购申请号") = "CGSQ"& bh  & Format(idx,"000")
               e.DataRow.save         
          End If
        End If
    End If
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/8 9:23:00 [显示全部帖子]

Dim bh As String = Format(e.DataRow("申请日期"),"yyMMDD") '取得编号的8位前缀

 

改成

 

Dim bh As String  =  Format(e.DataRow("申请日期"),"yyMMdd")  ' 取得编号的8位前缀

[此贴子已经被作者于2019/1/8 9:23:57编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/8 10:02:00 [显示全部帖子]

1、你在afterLoad事件,把所有行删除了啊

 

DataTables("窗口2_总表").DataRows.Clear
DataTables("窗口2_总表").addnew
DataTables("窗口2_总表").AutoAddNew = True
Tables("窗口2_总表").current("工作日期") = Date.Today

 

如果你是不想显示任何数据,请修改sql语句

 

select * from {管理层杂工总表} where 1=2

 

2、datacolchanged事件代码没问题,你在表格里面再新增行,都可以得到正确的编号。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/8 12:29:00 [显示全部帖子]

以下是引用nuoyan88在2019/1/8 11:33:00的发言:
老师,是可以得到正确的编码,但是问题是我的管理层杂工总表中之前就有一个号:CGSQ190108007,然后我在窗口表中生成的号却不是按照CGSQ190108008这样来的,反而是按照窗口表中自己的顺序增加

 

认认真真看6楼好不好?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/16 12:35:00 [显示全部帖子]

如果是之前那个问题。

 

你在afterLoad事件,把红色代码删除

 

'DataTables("窗口2_总表").DataRows.Clear
DataTables("窗口2_总表").addnew
DataTables("窗口2_总表").AutoAddNew = True
Tables("窗口2_总表").current("工作日期") = Date.Today


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/16 12:41:00 [显示全部帖子]

1、直接在表格里面,而不是窗口里面新增测试,是否正常?

 

2、如果不正常,加入msgbox弹出条件、值,看一下,是否正常。

 

3、不会做,实例发上来测试。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/16 14:50:00 [显示全部帖子]

改成

 

If e.DataCol.Name = "申请日期"  Then
    If e.DataRow.IsNull("申请日期")  Then
        e.DataRow("采购申请号") = Nothing
    Else
        e.DataRow.save
       
        Dim bh As String  =  Format(e.DataRow("申请日期"),"yyMMdd")  ' 取得编号的8位前缀
        If e.DataRow("采购申请号").StartsWith(bh) = False '如果编号的前8位不符
            Dim dt2 As DataTable = DataTables("采购申请明细")
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.SQLCompute("Max(采购申请号)","申请日期 = #" & e.DataRow("申请日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
            msgbox(max)
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(10,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            msgbox(idx)
            e.DataRow("采购申请号") = "CGSQ"& bh  & Format(idx,"000")
            e.DataRow.save
        End If
    End If
End If


 回到顶部