Foxtable(狐表)用户栏目专家坐堂 → [求助]下述代码哪儿出错了,出现错误对话框,请指教


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

主题:[求助]下述代码哪儿出错了,出现错误对话框,请指教

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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编辑过]

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


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

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

 

改成

 

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


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


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

继续写2楼的代码,加入msgbox,看弹出什么。

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


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

回复9楼,处理BT的情况,不是SC的情况。你弹出的是SC的。

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


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

msgbox(bh)
            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) '取得该年的相同工程代码的最大单据编号
msgbox(max)
                If max > "" Then '如果存在最大单据编号
msgbox(123)
                    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

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


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

执行14楼代码,看弹出什么。


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


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

回复16楼,你要测试BT的情况。

 

如果处理不了,那导出表格数据,新建一个项目,发上来测试。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/26 17:51: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 = "归档号 like '" & bh & "%' And 批准日期 >= #" & fd & "# And 批准日期 <= #" & ld & "# and _identify <> " & e.DataRow("_identify")
                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


 回到顶部