Foxtable(狐表)用户栏目专家坐堂 → [求助]增加行


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

主题:[求助]增加行

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/26 21:49:00 [只看该作者]

看看分别弹出什么内容,运行到哪个弹出框后出错

Select Case e.DataCol.Name
    Case "入库单编号"
        If e.DataRow.IsNull("入库单编号") Then
            e.DataRow("入库单编号明细") = Nothing
        Else
            Dim bh As  String = e.DataRow("入库单编号")
MessageBox.Show(bh)
            Dim max  As  String
            Dim idx  As  Integer
            max = e.DataTable.Compute("Max(入库单编号明细)","入库单编号 = '" & bh  & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大入库单编号
MessageBox.Show(max)
            If max > ""  Then  '如果存在最大入库单编号
                Dim l As Integer = bh.Length
MessageBox.Show(max.Substring(l,3))
                idx = CInt(max.Substring(l,3)) + 1  '获得最大入库单编号的后两位顺序号,并加1
            Else
                idx = 1  '否则顺序号等于1
            End  If
            e.DataRow("入库单编号明细") = bh & Format(idx,"000")
            MessageBox.Show(e.DataRow("入库单编号明细")) 
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/10/26 22:07:00 [只看该作者]


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

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

图片点击可在新窗口打开查看此主题相关图片如下:图像 4.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/10/26 22:07:16编辑过]

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/26 22:14:00 [只看该作者]

图片的顺序和messagebox的顺序是一致的吗?如果是,从这些数据难道还看不出问题?

入库单编号明细比入库单编号还短,是不是搞反了

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/10/26 22:23:00 [只看该作者]

老师,没有啊。


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

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/10/26 22:39:00 [只看该作者]


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

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/26 22:43:00 [只看该作者]

12楼的图片是什么回事?第三个框弹不出来,明显是max.Substring(l,3)出错

自己跟踪一下自己的数据

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/10/26 22:50:00 [只看该作者]

把测试代码屏蔽了。

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/26 22:51:00 [只看该作者]

搞不定就上传例子吧

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/10/26 23:19:00 [只看该作者]

老师,我发过来了。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:入库.table


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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/27 8:51:00 [只看该作者]

代码问题在这里
'===============================提取字符=============================================
Dim s As String = e.DataRow("入库单编号明细")
e.DataRow("批次号") = s.SubString(s.Length-6,3) & s.SubString(s.Length-2,2)


应该这样用

Select Case e.DataCol.Name
    Case "入库单编号明细"
        Dim s As String = e.DataRow("入库单编号明细")
        e.DataRow("批次号") = s.SubString(s.Length-6,3) & s.SubString(s.Length-2,2)
End Select

再优化,可以这样用

Select Case 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  '如果存在最大入库单编号
                Dim l As Integer = bh.Length
                idx = CInt(max.Substring(l,3)) + 1  '获得最大入库单编号的后两位顺序号,并加1
            Else
                idx = 1  '否则顺序号等于1
            End  If
            e.DataRow("入库单编号明细") = bh & Format(idx,"000")
        End If
    Case "入库单编号明细"
        Dim s As String = e.DataRow("入库单编号明细")
        e.DataRow("批次号") = s.SubString(s.Length-6,3) & s.SubString(s.Length-2,2)
End Select

再优化,还可以这样用

Select Case e.DataCol.Name
    Case "入库单编号"
        If e.DataRow.IsNull("入库单编号") Then
            e.DataRow("入库单编号明细") = Nothing
            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  '如果存在最大入库单编号
                Dim l As Integer = bh.Length
                idx = CInt(max.Substring(l,3)) + 1  '获得最大入库单编号的后两位顺序号,并加1
            Else
                idx = 1  '否则顺序号等于1
            End  If
            e.DataRow("入库单编号明细") = bh & Format(idx,"000")
            Dim s As String = e.DataRow("入库单编号明细")
            e.DataRow("批次号") = s.SubString(s.Length-6,3) & s.SubString(s.Length-2,2)
        End If
End Select

这个事件很多地方都可以像上面一样优化一下,具体自己体会一下

 回到顶部
总数 21 上一页 1 2 3 下一页