以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]下述代码哪儿出错了,出现错误对话框,请指教  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=118150)

--  作者:hrw68529
--  发布时间:2018/4/26 9:11:00
--  [求助]下述代码哪儿出错了,出现错误对话框,请指教
代码:Select e.DataCol.Name
    Case "批准日期","备注"
        If e.DataRow.IsNull("批准日期") Then
            e.DataRow("归档号") = Nothing
        Else
            Dim d As Date = e.DataRow("批准日期")
            Dim y As Integer = d.Year
            Dim m As Integer = d.Month
            Dim Days As Integer = Date.DaysInMonth(y,m)
            Dim fd As Date = New Date(y,1,1) \'获得该年的第一天
            Dim ld As Date = New Date(y,12,31) \'获得该年的最后一天
            Dim s = e.DataRow( "备注")
            
            Dim bh As String = e.DataRow("全宗号") & "-" &"〔" & Format(d,"yyyy") & "〕" & "-" 
            
            If s Like "伤残*" Then
                bh &= "SC-"
            ElseIf s Like "病退*" Then
                bh &= "BT-"
            End If
            
            If e.DataRow("归档号").StartsWith(bh) = False \'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "全宗号 = \'"& e.DataRow("全宗号") & "\' And 批准日期 >= #" & fd & "# And 批准日期 <= #" & ld & "#"
                max = e.DataTable.Compute("Max(归档号)",flt) \'取得该年的相同工程代码的最大单据编号
                If max > "" Then \'如果存在最大单据编号
                    idx = max.LastIndexOf("〕") + 1
                    idx = CInt(max.Substring(idx,4)) + 1 \'获得最大单据编号的后四位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("归档号") = bh & Format(idx,"0000") & "号"
            End If
        End If
End Select
出错图:
图片点击可在新窗口打开查看此主题相关图片如下:截图05.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2018/4/26 11:10:00
--  
加入msgbox,看弹出什么
 
                If max > "" Then \'如果存在最大单据编号
msgbox(max)
                    idx = max.LastIndexOf("〕") + 1
msgbox(idx)
msgbox(max.substring(bh.length))
msgbox(max.substring(idx))
                    idx = CInt(max.Substring(idx,4)) + 1 \'获得最大单据编号的后四位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
[此贴子已经被作者于2018/4/26 11:10:28编辑过]

--  作者:hrw68529
--  发布时间:2018/4/26 14:27:00
--  
按顺序弹出 :以下1、
图片点击可在新窗口打开查看此主题相关图片如下:截图00001.jpg
图片点击可在新窗口打开查看
2、
图片点击可在新窗口打开查看此主题相关图片如下:截图00002.jpg
图片点击可在新窗口打开查看
3、
图片点击可在新窗口打开查看此主题相关图片如下:截图00003.jpg
图片点击可在新窗口打开查看


--  作者:hrw68529
--  发布时间:2018/4/26 14:27:00
--  
4、
图片点击可在新窗口打开查看此主题相关图片如下:截图00004.jpg
图片点击可在新窗口打开查看
5、
图片点击可在新窗口打开查看此主题相关图片如下:截图00005.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2018/4/26 14:34:00
--  

idx = CInt(max.Substring(idx,4)) + 1

 

改成

 

idx = CInt(max.Substring(bh.length,4)) + 1


--  作者:hrw68529
--  发布时间:2018/4/26 14:44:00
--  
有点甜,改后,在归档号列出现重复编号,怎么回事?
如图:
图片点击可在新窗口打开查看此主题相关图片如下:截图0008.jpg
图片点击可在新窗口打开查看

--  作者:hrw68529
--  发布时间:2018/4/26 15:05:00
--  
但如果是伤残的,能按编号进行、
如图:
图片点击可在新窗口打开查看此主题相关图片如下:截图00009.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2018/4/26 15:17:00
--  
继续写2楼的代码,加入msgbox,看弹出什么。
--  作者:hrw68529
--  发布时间:2018/4/26 15:25:00
--  
给上次的图片提示一样,只不过是0001号,后0002号,…………出现上述对话。
如图:
图片点击可在新窗口打开查看此主题相关图片如下:1001.jpg
图片点击可在新窗口打开查看

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

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



--  作者:有点甜
--  发布时间:2018/4/26 15:35:00
--  
回复9楼,处理BT的情况,不是SC的情况。你弹出的是SC的。