Foxtable(狐表)用户栏目专家坐堂 → 序列号不自新增


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

主题:序列号不自新增

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/4 16:02: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("下达日期"),"yydd")  ' 取得编号的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("下达日期") & "#") '取得该天的最大编号

msgbox(max)
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(6,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("材料编码") = "fl"& bh  & Format(idx,"000")
            e.DataRow.save
        End If
    End If
End If


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


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

 

msgbox(max) 弹出什么?

 

 


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


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

max = e.DataTable.SQLCompute("Max(材料编码)","下达日期 = '" & e.DataRow("下达日期") & "' and len(材料编码) = 9") '取得该天的最大编号

msgbox(max)


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


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

贴出你新增行的代码。

 

在代码里面加入msgbox,看是否执行到。

 

要确保你写的表名是正确的,要确保你表格里面没有筛选数据。

 


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


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

    Case "增加行"
        Dim t As Table = Tables("销售辅料下达_采购申请明细")
        Dim cs() As String = {"申请日期","申请人", "备注", "采购申请号","申请类型","需审核人","销售订单号","订单状态","线别"}
        Dim r As Row = t.current
msgbox(123)
        If r Is Nothing Then
            Dim nr As Row = t.addnew
            Tables("销售辅料下达_采购申请明细").DataTable.DataCols("申请日期").SetDateTimeFormat(DateTimeFormatEnum.Date)
            nr("申请日期") = Date.Today
            nr("下达日期") = Date.Today
            nr("制单人") = _UserName
        Else
            Dim nr As Row = t.addnew
            Tables("销售辅料下达_采购申请明细").DataTable.DataCols("申请日期").SetDateTimeFormat(DateTimeFormatEnum.Date)
            nr("申请日期") = Date.Today
            nr("下达日期") = Date.Today
            nr("制单人") = _UserName
            For Each c As String In cs
                nr(c) = r(c)
            Next
        End If

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


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

 

  Case "增加行"
        Dim t As Table = Tables("销售辅料下达_采购申请明细")
        Dim cs() As String = {"申请日期","申请人", "备注", "采购申请号","申请类型","需审核人","销售订单号","订单状态","线别"}
        Dim r As Row = t.current
msgbox(123)

msgbox(currentTable.name)

msgbox(currentTable.filter)

msgbox(Tables("销售辅料下达_采购申请明细").filter)

msgbox(456)
        If r Is Nothing Then
            Dim nr As Row = t.addnew
            Tables("销售辅料下达_采购申请明细").DataTable.DataCols("申请日期").SetDateTimeFormat(DateTimeFormatEnum.Date)
            nr("申请日期") = Date.Today
            nr("下达日期") = Date.Today
            nr("制单人") = _UserName
        Else
            Dim nr As Row = t.addnew
            Tables("销售辅料下达_采购申请明细").DataTable.DataCols("申请日期").SetDateTimeFormat(DateTimeFormatEnum.Date)
            nr("申请日期") = Date.Today
            nr("下达日期") = Date.Today
            nr("制单人") = _UserName
            For Each c As String In cs
                nr(c) = r(c)
            Next
        End If


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


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

1、新增行代码没问题啊。

 

2、截图说明报什么错。哪里不正确。


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


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

如果是datacolchanged事件的问题,参考

 

If e.DataCol.Name = "下达日期"  Then
    If e.DataRow.IsNull("下达日期")  Then
        e.DataRow("材料编码") = Nothing
    Else
        e.DataRow.save
        Dim bh As String  =  Format(e.DataRow("下达日期"),"yyMM")  ' 取得编号的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 len(材料编码) = 9") '取得该天的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(6,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("材料编码") = "fl"& bh & Format(idx,"000")
            e.DataRow.save
        End If
    End If
End If
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")) '取得该天的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(10,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("采购申请号") = "CGSQ"& bh  & Format(idx,"000")
            e.DataRow.save
        End If
    End If
End If


 回到顶部